ฉันทำตามคำแนะนำในการนำทางลิ้นชักการนำทางโดย Googleและฉันต้องการเพิ่มลงในกิจกรรมที่มีแท็บและท่าทาง
ฉันต้องการปิดการใช้งานท่าทางเพื่อเปิดลิ้นชักนำทางไม่มีใครมีความคิดใด ๆ ในการทำเช่นนี้?
ฉันทำตามคำแนะนำในการนำทางลิ้นชักการนำทางโดย Googleและฉันต้องการเพิ่มลงในกิจกรรมที่มีแท็บและท่าทาง
ฉันต้องการปิดการใช้งานท่าทางเพื่อเปิดลิ้นชักนำทางไม่มีใครมีความคิดใด ๆ ในการทำเช่นนี้?
คำตอบ:
คุณควรใช้:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
มันใช้งานได้สำหรับฉันการปัดเพื่อเปิดลิ้นชักถูกปิดใช้งาน
mDrawerLayout
ให้ตั้งค่าดังนี้:mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ToolBar
(API 21) และใช้SlidingTabLayout
คุณลักษณะที่มีซึ่งขัดแย้งกับ Nav ของฉัน รูดลิ้นชัก ดังนั้นฉันควรปิดการใช้งาน Nav การเลื่อนลิ้นชักเพื่อสนับสนุนToolBar
คุณลักษณะการเลื่อน
สำหรับการล็อคคุณสามารถทำได้:
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
และให้พวกเขาคืนค่าเท็จ
คำตอบสำหรับการปิดใช้งานการปัดเป็นคำตอบที่ถูกต้อง ฉันคิดว่า LOCK_MODE_LOCKED_CLOSED ทำงานใน Compat 24.x ได้ แต่ฟังก์ชั่นนี้ได้เปลี่ยนไปในไลบรารี่ compat ที่ใหม่กว่าและตอนนี้ LOCK_MODE_LOCKED_CLOSED ก็ป้องกันการแสดงเมนู nav อย่างสมบูรณ์แม้กระทั่งการใช้เมนูแฮมเบอร์เกอร์
คลาสต่อไปนี้เหมาะสำหรับฉัน (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)
}
}
มันใช้งานได้สำหรับฉัน
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});