2013-07-26 15 views
9

Tek bir Etkinliğe sahip bir Android uygulamasına sahibim.Android uygulamasında DrawerLayout kullanırken jestler çalışmıyor

<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> 

Sonra benim kaynağında iki jest dedektörleri yapıcı tanımlanan var:

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

Ve onTouchEvent bu şekilde geçersiz kılma ediyorum:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getPointerCount() > 1) { 
     this.mScaleDetector.onTouchEvent(event); 
    } else { 
     this.mDetector.onTouchEvent(event); 
    } 
    return super.onTouchEvent(event); 
} 
Bu aktivite bu düzeni kullanır

Sorunum, hareketlerin algılanmamasıdır (çekmeceyi tokatlamak hareketi ile açabilmem rağmen). Çekmece düzenini örneğin doğrusal bir düzen ile değiştirirsem bu sorun oluşmaz, bu nedenle neden gezinme çekmecesi olur. Neyi yanlış yapıyorum?

+0

Bu sorun için bir çözüm buldunuz mu? – owe

+0

@vivoila çözümünü test etme zamanım olmadı ama gelecek hafta yapacağım. Sana birşey söyleyeceğim. –

+0

Benzer bir sorunla karşılaştım: http://stackoverflow.com/questions/21040150/drawerlayout-prevents-call-of-mainactivity-ontouchevent#comment31631959_21040150. Sorgudaki güncellemeleri yapmadan önce, @vivoila çözümünü test ettim, ancak bu benim için çalışmadı. – owe

cevap

1

Çekmece düzeniniz için bir TouchListener ayarlamalısınız. ör./

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; 
     } 
    }); 
İlgili konular