2013-07-26 88 views
9

我有一個Android應用程序,其中包含一個Activity。本次活動採用這種佈局:在Android應用中使用DrawerLayout時手勢不起作用

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 

然後,在我的源代碼我在構造函數中定義了兩個手勢探測器:

mDetector = new GestureDetectorCompat(this, new CustomGestureListener()); 
mScaleDetector = new ScaleGestureDetector(this, new CustomScaleGestureListener()); 

而且我重寫的onTouchEvent這樣:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getPointerCount() > 1) { 
     this.mScaleDetector.onTouchEvent(event); 
    } else { 
     this.mDetector.onTouchEvent(event); 
    } 
    return super.onTouchEvent(event); 
} 

我的問題是沒有檢測到手勢(儘管我可以用滑動手勢打開抽屜)。如果我用例如線性佈局替換drawerlayout,則不會發生此問題,因此原因是導航抽屜。我究竟做錯了什麼?

+0

您是否得到了此問題的解決方案? – owe

+0

我沒有時間測試@vivoila解決方案,但我會在下週完成。我會告訴你一些事情。 –

+0

我得到了類似的問題:http://stackoverflow.com/questions/21040150/drawerlayout-prevents-call-of-mainactivity-ontouchevent#comment31631959_21040150。在我對問題進行更新之前,我測試了@vivoila解決方案,但這不適用於我。 – owe

回答

1

您必須爲抽屜佈局設置TouchListener。 eg/

gestureDetector = new GestureDetector(this, new CustomGestureListener()); 

    mDrawerLayout.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (gestureDetector.onTouchEvent(event)) { 
       return true; 
      } 
      return false; 
     } 
    }); 
相關問題