0

我有一个 ViewPager。在每个寻呼机中,它显示一个列表视图。Listview 中的每一行都包含一个 Horizo​​ntalScrollView 元素。这是代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white" >

    <LinearLayout 
        android:id="@+id/survey_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentTop="true"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/store_name"/>

        <TextView
            android:id="@+id/txt_store_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"/>           

    </LinearLayout>

    <HorizontalScrollView 
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:layout_below="@id/survey_header"
        android:scrollbars="none">

        <TableLayout 
            android:id="@+id/survey_table"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TableRow 
                android:id="@+id/survey_table_row"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <TextView 
                    android:id="@+id/txt_status"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"/>
                <TextView 
                    android:id="@+id/txt_product"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"/>
                <TextView 
                    android:id="@+id/txt_stock"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"/>
            </TableRow>

            <TableRow 
                android:id="@+id/menu_table_row"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <TextView 
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"
                    android:text="@string/survey_status"/>
                <TextView 
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"
                    android:text="@string/product_info"/>
                <TextView 
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:gravity="center"
                    android:textColor="@color/red_text"
                    android:text="@string/stock_count"/>
            </TableRow>
        </TableLayout>

    </HorizontalScrollView>


</RelativeLayout>

每次我尝试滚动水平滚动视图时,ViewPager 首先接收触摸事件并更改页面。

触摸 Horizo​​ntal Scorll View 时如何禁用 ViewPager 的更改页面。

提前致谢。

4

1 回答 1

1
HorizontalScrollView scrollView=(HorizontalScrollView)findViewById(R.id.scrollView); 


scrollView.setOnTouchListener(new View.OnTouchListener() {

            float rawX;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        scrollView.getParent().requestDisallowInterceptTouchEvent(true);
                        rawX = event.getRawX();
                        return false;
                    case MotionEvent.ACTION_CANCEL:
                    case MotionEvent.ACTION_UP:
                        scrollView.getParent().requestDisallowInterceptTouchEvent(false);
                        rawX = 0f;
                        return false;
                    case MotionEvent.ACTION_MOVE:
                        if (Math.abs(rawX - event.getRawX()) > ViewConfiguration.get(getActivity()).getScaledTouchSlop())
                            scrollView.getParent().requestDisallowInterceptTouchEvent(true);

                        break;
                }


                return false;
            }
        });
于 2013-07-19T05:23:15.913 回答