私は Googleのナビゲーションドロワーガイド をフォローしており、タブとジェスチャーでアクティビティに追加したいと思います。
ナビゲーションドロワーを開くためのジェスチャを無効にしたいのですが、これを行う方法はありますか?
以下を使用する必要があります。
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
それは私と一緒に動作します、引き出しを開くスワイプは無効になりました。
それでも動作しない場合は、提供されている答えを確認してください here 。
ロックするには、これを行うことができます:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
そしてロック解除のために:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
setDrawerLockMode() ;を使用する場合も重力値を追加します。
これを行う :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
これは魅力のように動作するはずです
スワイプを無効にするには、onInterceptTouchEvent
でonTouchEvent
およびDrawerLayout
をオーバーライドし、falseを返します。
スワイプを無効にする答えは正しいものです。 LOCK_MODE_LOCKED_CLOSEDはCompat 24.xで機能したと思いますが、新しいcompatライブラリで機能が変更され、LOCK_MODE_LOCKED_CLOSEDにより、ハンバーガーメニューを使用してもナビゲーションメニューが完全に表示されなくなりました。
次のクラスは私のために動作します(Kotlin):
class MyDrawerLayout(ctx: Context) : DrawerLayout(ctx) {
var isSwipeOpenEnabled: Boolean = true
override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
return false
}
return super.onInterceptTouchEvent(ev)
}
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(ev: MotionEvent): Boolean {
if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
return false
}
return super.onTouchEvent(ev)
}
}