2013-07-19 40 views
0

我有一個ViewPager。在每個尋呼機中,它顯示一個列表視圖。 Listview中的每一行都包含一個Horizo​​ntalScrollView元素。下面是代碼:如何在此ViewPager Android中觸摸特定視圖時禁用ViewPager的運動?

<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的更改頁面。

在此先感謝。

回答

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; 
      } 
     }); 
+0

我試試你的解決方案,但它不起作用。當我滾動ScrollView時,ViewPager仍然會滑動。 –

+0

嘗試移動scrollView.getParent()。requestDisallowInterceptTouchEvent(false);方法來案例MotionEvent.ACTION_DOWN: –

+0

我嘗試如果scrollView.getParent()。requestDisallowInterceptTouchEvent(true);如果MotionEvent.ACTION_DOWN,現在情況良好。非常感謝 –