Tôi đã theo dõi hướng dẫn ngăn kéo điều hướng của Google và tôi muốn thêm nó vào Hoạt động bằng các tab và cử chỉ.
Tôi muốn tắt cử chỉ để mở ngăn điều hướng, có ai có ý tưởng gì để làm điều này không?
Tôi đã theo dõi hướng dẫn ngăn kéo điều hướng của Google và tôi muốn thêm nó vào Hoạt động bằng các tab và cử chỉ.
Tôi muốn tắt cử chỉ để mở ngăn điều hướng, có ai có ý tưởng gì để làm điều này không?
Câu trả lời:
Bạn nên sử dụng:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Nó làm việc cho tôi, thao tác vuốt để mở ngăn kéo đã bị vô hiệu hóa.
Nếu nó vẫn không hoạt động, hãy xem câu trả lời được cung cấp ở đây .
mDrawerLayout
, hãy đặt nó như sau:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) mới và sử dụng SlidingTabLayout
tính năng mà nó có, điều này mâu thuẫn với Nav của tôi. ngăn kéo vuốt. Vì vậy, tôi muốn vô hiệu hóa Nav. ngăn kéo trượt có lợi cho các ToolBar
tính năng trượt.
để khóa bạn có thể làm điều này:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
và để mở khóa:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
Thêm giá trị trọng lực khi sử dụng setDrawerLockMode () ;
Làm cái này :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
Điều này sẽ làm việc như một nét duyên dáng
Để vô hiệu hóa thao tác vuốt, ghi đè onInterceptTouchEvent
và onTouchEvent
bật DrawerLayout
và trả lại sai.
Câu trả lời để vô hiệu hóa vuốt là câu trả lời đúng. Tôi nghĩ LOCK_MODE_LOCKED_CLposed đã hoạt động trong Compat 24.x, nhưng chức năng đã được thay đổi trong các thư viện compat mới hơn và LOCK_MODE_LOCKED_CLposed hiện ngăn chặn hoàn toàn menu điều hướng hiển thị, ngay cả khi sử dụng menu hamburger.
Lớp sau đây hoạt động với tôi (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)
}
}
Điều này làm việc cho tôi
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});