【问题标题】:hamburger icon doesn't close the nagation drawer汉堡图标不会关闭导航抽屉
【发布时间】:2020-09-25 13:57:02
【问题描述】:

我正在使用带有 RTL 布局支持的导航抽屉的导航组件,抽屉打开正常,但是当我再次单击图标以关闭它时,没有任何反应

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_dashboard)
    window.decorView.layoutDirection = View.LAYOUT_DIRECTION_RTL

    navController = Navigation.findNavController(this,R.id.navHost)

    appBarConfiguration = AppBarConfiguration(navController.graph,drawerLayout)

    navigationView.setupWithNavController(navController)
    setupActionBarWithNavController(navController,appBarConfiguration)

}

override fun onSupportNavigateUp(): Boolean {
    navController = Navigation.findNavController(this,R.id.navHost)
    return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}

【问题讨论】:

  • 试试这个:if (drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } 汉堡点击。

标签: android android-layout android-fragments uinavigationcontroller


【解决方案1】:

找了很久才找到解决办法,你必须创建一个 ActionBarDrawerToggle 对象并同步它,然后你应该重写 onOptionsItemSelectected 上的方法就可以了。

private lateinit var toggle: ActionBarDrawerToggle

override fun onCreate(savedInstanceState: Bundle?){

    toggle = ActionBarDrawerToggle(this, drawerLayout, R.string.open, 
    R.string.close)

    toggle.syncState()
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {

    if (toggle.onOptionsItemSelected(item)){
        return true
    }
    return super.onOptionsItemSelected(item)
}

作为总结,我没有放抽屉配置的额外代码。

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 2016-02-02
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多