Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 导航组件,控制何时显示汉堡包或后退图标大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下活动
class MainActivity : AppCompatActivity() {

private lateinit var drawerLayout: androidx.drawerlayout.widget.DrawerLayout

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceStatE)
    setContentView(R.layout.main_activity)

    drawerLayout = drawer_layout

    val navController = Navigation.findNavController(this,R.id.fragment_main_navHost)

    setSupportActionBar(toolbar)

    NavigationUI.setupActionBarWithNavController(this,navController,drawerLayout)
    navView_main.setupWithNavController(navController)
}

override fun onSupportNavigateUp(): Boolean {
    return NavigationUI.navigateUp(drawerLayout,Navigation.findNavController(this,R.id.fragment_main_navHost))
}

override fun onBACkPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START)
    } else {
        super.onBACkPressed()
    }
}

你可以看到它与导航图相关联,我正在使用导航抽屉.当我浏览抽屉中的项目时,我想保留汉堡图标,只有当我点击片段或弹出窗口中的项目时才将其更改为上/后按钮,并确保系统的行为反映了什么用户期望基于显示的图标.那可能吗

解决方法

按照以下步骤操作

1.绑定你的NavigationView with NavigationUI

NavigationUI.setupWithNavController(nav_view,hostFragment.navController)

2.绑定ActionBar With NavController

NavigationUI.setupActionBarWithNavController(this@NavActivity,hostFragment.navController)

3.绑定ActionBar and DrawerLayout With NavController

NavigationUI.setupActionBarWithNavController(this@NavActivity,hostFragment.navController,drawer_layout)

4.覆盖您活动中的onSupportNavigateUp()

override fun onSupportNavigateUp(): Boolean {
    return NavigationUI.navigateUp(drawer_layout,hostFragment.navController) 
              || super.onSupportNavigateUp()
}

样品:

class NavActivity : AppCompatActivity(),NavigationView.onNavigationItemSELEctedListener {

    lateinit var hostFragment: NavHostFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceStatE)
        setContentView(R.layout.activity_nav)
        setSupportActionBar(toolbar)

        fab.setOnClickListener { view ->
            Snackbar.make(view,"replace with your own action",Snackbar.LENGTH_LONG)
                    .setAction("Action",null).show()
        }

        val toggle = ActionBarDrawerToggle(
                this,drawer_layout,toolbar,R.String.navigation_drawer_open,R.String.navigation_drawer_closE)
        drawer_layout.addDrawerListener(togglE)
        toggle.syncState()

        nav_view.setNavigationItemSELEctedListener(this)

        hostFragment = supportFragmentManager.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment    
        NavigationUI.setupWithNavController(nav_view,hostFragment.navController)    
        NavigationUI.setupActionBarWithNavController(this@NavActivity,drawer_layout)    
    }

    override fun onBACkPressed() {
        if (drawer_layout.isDrawerOpen(GravityCompat.START)) {
            drawer_layout.closeDrawer(GravityCompat.START)
        } else {
            super.onBACkPressed()
        }
    }

    override fun onSupportNavigateUp(): Boolean {
        return NavigationUI.navigateUp(drawer_layout,hostFragment.navController) || super.onSupportNavigateUp()
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.nav,menu)
        return true
    }

    override fun onOptionsItemSELEcted(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button,so long
        // as you specify a parent activity in AndroidManifest.xml.
        when (item.itemId) {
            R.id.action_setTings -> return true
            else -> return super.onOptionsItemSELEcted(item)
        }
    }

    override fun onNavigationItemSELEcted(item: MenuItem): Boolean {
        // Handle navigation view item clicks here.
        drawer_layout.closeDrawer(GravityCompat.START)
        return true
    }
}

产量

家庭片段:

片段二:

片段树:

大佬总结

以上是大佬教程为你收集整理的android – 导航组件,控制何时显示汉堡包或后退图标全部内容,希望文章能够帮你解决android – 导航组件,控制何时显示汉堡包或后退图标所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。