横向滑动的 ListView

public class HVListView extends ListView {

	private GestureDetector mGesture;
	public LinearLayout mListHead;
	private int mOffset = 0;
	private int screenWidth;
	
	
	public HVListView(Context context) {
		super(context);
		mGesture = new GestureDetector(context, mOnGesture);
	}


	public HVListView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		mGesture = new GestureDetector(context, mOnGesture);
	}
	
	
	public HVListView(Context context, AttributeSet attrs) {
		super(context, attrs);
		mGesture = new GestureDetector(context, mOnGesture);
	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		super.dispatchTouchEvent(ev);
		return mGesture.onTouchEvent(ev);
	}

	private OnGestureListener mOnGesture = new GestureDetector.SimpleOnGestureListener() {

		@Override
		public boolean onDown(MotionEvent e) {
			return true;
		}

		@Override
		public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
			return false;
		}

		@Override
		public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
			synchronized (HVListView.this) {
				if (Math.abs(distanceX) > Math.abs(distanceY)) {
					int moveX = (int) distanceX;
					int curX = mListHead.getScrollX();
//					int scrollWidth = getWidth();
					int scrollWidth = (int)( 890 * getContext().getResources().getDisplayMetrics().density);
					int dx = moveX;
					if (curX + moveX < 0)
						dx = 0;
					if (curX + moveX + getScreenWidth() > scrollWidth)
						dx = scrollWidth - getScreenWidth() - curX;

					mOffset += dx;

					for (int i = 0, j = getChildCount(); i < j; i++) {
						View child = ((ViewGroup) getChildAt(i)).getChildAt(1);
						if (child.getScrollX() != mOffset)
							child.scrollTo(mOffset, 0);
					}
					mListHead.scrollBy(dx, 0);
				}

			}
			requestLayout();
			return true;
		}
	};

	public int getScreenWidth() {
		if (screenWidth == 0) {
			screenWidth = getContext().getResources().getDisplayMetrics().widthPixels;
			if (getChildAt(0) != null) {
				screenWidth -= ((ViewGroup) getChildAt(0)).getChildAt(0).getMeasuredWidth();
			} else if (mListHead != null) {
				screenWidth -= mListHead.getChildAt(0).getMeasuredWidth();
			}
		}
		return screenWidth;
	}

	public int getHeadScrollX() {
		return mListHead.getScrollX();
	}

	public LinearLayout getListHead() {
		return mListHead;
	}

	public void setListHead(LinearLayout listHead) {
		this.mListHead = listHead;
	}
}




<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
	android:layout_height="match_parent"
    >	
	<LinearLayout 
	    xmlns:tools="http://schemas.android.com/tools"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"
	    android:background="#F6F6F6"
	    android:orientation="vertical"
	    android:paddingBottom="2dip"
	    tools:context=".MainActivity" >
	
	    <!-- 和分公司运营数据界面查不多 -->
	
	    <include
	        android:id="@+id/title_include_layout"
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        layout="@layout/toptitle_include" />
	
	    <LinearLayout
	        android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:orientation="vertical" >
	
	        <TextView
	            android:id="@+id/city_hall"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"
	            android:layout_gravity="center_horizontal"
	            android:layout_marginTop="20dip"
	            android:text="所有城区的分公司"
	            android:textColor="@color/black"
	            android:textSize="20sp" />
	
	        <TextView
	            android:id="@+id/currentTime"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"
	            android:layout_gravity="center_horizontal"
	            android:layout_marginBottom="20dip"
	            android:layout_marginTop="20dip"
	            android:text="显示默认服务器时间"
	            android:textColor="@color/black"
	            android:textSize="14sp" />
	
	        <View
	            android:id="@+id/view_one"
	            android:layout_width="fill_parent"
	            android:layout_height="1dip"
	            android:layout_marginLeft="5dip"
	            android:layout_marginRight="5dip"
	            android:background="#B4B6B7" />
	
	        <LinearLayout
	            android:id="@+id/headLayout"
	            android:layout_width="1050dip"
	            android:layout_height="35dip"
	            android:layout_marginLeft="5dip"
	            android:layout_marginRight="5dip"
	            android:orientation="horizontal" >
	
	            <!-- 这里第一列的宽度进行固定 -->
	
	            <View
	                android:layout_width="1dip"
	                android:layout_height="fill_parent"
	                android:background="#B4B6B7" />
	
	            <TextView
	                style="@style/TextStyleBack"
	                android:layout_width="158dp"
	                android:layout_height="fill_parent"
	                android:text="营业厅名称" />
	
	            <View
	                android:layout_width="1dip"
	                android:layout_height="fill_parent"
	                android:background="#B4B6B7" />
	
	            <LinearLayout
	                android:id="@+id/headView"
	                android:layout_width="880dip"
	                android:layout_height="wrap_content"
	                android:orientation="horizontal" >
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="99dp"
	                    android:layout_height="fill_parent"
	                    android:text="取号人数" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="99dp"
	                    android:layout_height="fill_parent"
	                    android:text="服务人数" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="99dp"
	                    android:layout_height="fill_parent"
	                    android:text="弃号人数" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="99dp"
	                    android:layout_height="fill_parent"
	                    android:text="等待人数" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="119dp"
	                    android:layout_height="fill_parent"
	                    android:text="平均服务时间" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="119dp"
	                    android:layout_height="fill_parent"
	                    android:text="平均等待时间" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="119dp"
	                    android:layout_height="fill_parent"
	                    android:text="台席开放率" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	
	                <TextView
	                    style="@style/TextStyleBack"
	                    android:layout_width="119dp"
	                    android:layout_height="fill_parent"
	                    android:text="台席开放数" />
	
	                <View
	                    android:layout_width="1dip"
	                    android:layout_height="fill_parent"
	                    android:background="#B4B6B7" />
	            </LinearLayout>
	        </LinearLayout>
	
	        <View
	            android:id="@+id/view_two"
	            android:layout_width="fill_parent"
	            android:layout_height="1dip"
	            android:layout_marginLeft="5dip"
	            android:layout_marginRight="5dip"
	            android:background="#B4B6B7" />
	    </LinearLayout>
	
	    <LinearLayout
	        android:layout_width="fill_parent"
	        android:layout_height="fill_parent"
	        android:orientation="vertical" >
	
	        <com.ibm.moa.servicemanager.view.HVListView
	            android:id="@+id/hallListView"
	            android:layout_width="fill_parent"
	            android:layout_height="wrap_content"
	            android:layout_marginLeft="5dip"
	            android:layout_marginRight="5dip"
	            android:layout_weight="1"
	            android:cacheColorHint="@color/transparent"
	            android:divider="#B4B6B7"
	            android:dividerHeight="1dip"
	            android:fadingEdge="none" />
	
	        <!-- android:scrollbars="none" -->
	
	
	        <!--
	         <View
		    android:id="@+id/bottom_line" 
		    android:background="#B4B6B7"
		    android:layout_width="fill_parent"
		    android:layout_marginLeft="5dip"
		    android:layout_marginRight="5dip"
		    android:layout_height="1dip"
		    android:visibility="visible"
		    />
	        -->
	
	        <include
	            android:id="@+id/loadMore"
	            android:layout_width="fill_parent"
	            android:layout_height="wrap_content"
	            layout="@layout/loadmore_footer_view"
	            android:visibility="gone" />
	    </LinearLayout>
	    
	</LinearLayout>
	
	
	<include
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/tishi" />
	
</FrameLayout>



View child = ((ViewGroup) convertView).getChildAt(1);
        int headScrollX = hallListView.getHeadScrollX();
        if (child.getScrollX() != headScrollX) {
            child.scrollTo(hallListView.getHeadScrollX(), 0);
        }



横向滑动的 ListView

上一篇:定义一个以is开头的全局变量利用IDEA的Getter and Setter自动生成get跟set方法出现的问题


下一篇:Greenplum csvlog(日志数据)检索、释义(gp_toolkit.gp_log*)