Fix drawer OnBackPressedCallback

This commit is contained in:
tarsin committed 2023-01-02 09:35:53 +08:00
1 parent d74023d4fa
commit a34e766f70
1 file changed
+5 -18
@@ -603,25 +603,12 @@ class MainActivity : StageActivity(), NavigationView.OnNavigationItemSelectedLis
private val mDrawerOnBackPressedCallback = private val mDrawerOnBackPressedCallback =
object : OnBackPressedCallback(false), DrawerListener { object : OnBackPressedCallback(false), DrawerListener {
override fun handleOnBackPressed() { val slideThreshold = 0.05
mDrawerLayout?.closeDrawers() override fun handleOnBackPressed() { mDrawerLayout?.closeDrawers() }
} override fun onDrawerSlide(drawerView: View, slideOffset: Float) { isEnabled = slideOffset > slideThreshold }
override fun onDrawerOpened(drawerView: View) {}
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {}
override fun onDrawerOpened(drawerView: View) {
isEnabled = true
}
override fun onDrawerClosed(drawerView: View) {} override fun onDrawerClosed(drawerView: View) {}
override fun onDrawerStateChanged(newState: Int) { override fun onDrawerStateChanged(newState: Int) {}
when (newState) {
DrawerLayout.STATE_DRAGGING, DrawerLayout.STATE_SETTLING -> isEnabled = true
DrawerLayout.STATE_IDLE -> {
// Note that it's impossible to have two drawers open at the same time
if ((mDrawerLayout?.isDrawerVisible(GravityCompat.START) == true) == (mDrawerLayout?.isDrawerVisible(GravityCompat.END) == true)) isEnabled = false
}
}
}
} }
companion object { companion object {