如何为左侧操作栏上的菜单充气

时间:2018-09-19 04:34:23

标签: android kotlin android-actionbar

我在顶部操作栏中有一个菜单,该菜单允许您更改密码,编辑其个人资料并注销。我需要的是,一旦他们单击“编辑个人资料”选项,我想在左侧的操作栏中添加箭头或“ <”,如果用户要退出编辑菜单,则允许用户使用“返回”选项配置文件,以及在编辑时隐藏右侧菜单选项。这是我的右侧菜单的代码:

override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        inflater!!.inflate(R.menu.profiletoolbar, menu)
        super.onCreateOptionsMenu(menu, inflater)
    }

    //get the actionbar selction when pressed
    override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
        R.id.userLogout -> {
            FirebaseAuth.getInstance().signOut()
            val i = Intent(context, Login::class.java)
            startActivity(i)
            true
        }
        R.id.editBio -> {
            editProfileBio()
            true
        }
        else -> super.onOptionsItemSelected(item)
    }

我真的很想了解其工作原理。有人能帮我吗?我也可以只用箭头或“ <”代替右边的菜单,尽管我不太喜欢这个主意。

2 个答案:

答案 0 :(得分:0)

怎么样:setDisplayHomeAsUpEnabled()

R.id.editBio -> {
            editProfileBio()
            supportActionBar?.setDisplayHomeAsUpEnabled(true)
            true
        }

要在按下时进行处理:

override fun onBackPressed() {
        super.onBackPressed()
        // do your stuff when pressed the back Button
    }

  

我也可以将右侧菜单替换为   箭头或“ <”,尽管我不太喜欢这个主意

也不喜欢这个主意。通过单击Button时启用后退editbio,您将可以访问当前菜单,并且还会有后退Button,因此这似乎是一种理想的方法。 / p>

答案 1 :(得分:0)

您只需要听R.id.home选项

  1. 在活动布局中添加工具栏。
  2. 在您的片段中声明它需要重新绘制工具栏。

    setHasOptionsMenu(true);

  3. 将工具栏设置为操作栏

    private fun setActionBar() {
        val toolbar = getActivity().findViewById(R.id.tb_main_toolbar)
    
        if (toolbar != null) {
            (getActivity() as AppCompatActivity).setSupportActionBar(toolbar)
        }
        val actionBar = (getActivity() as AppCompatActivity).supportActionBar
        if (null != actionBar) {
            customizeActionBar(actionBar)
        }
    }
    
    private fun customizeActionBar(actionBar: ActionBar) {
        actionBar.setDisplayHomeAsUpEnabled(true)
        actionBar.setTitle(R.string.logout)
        actionBar.setDisplayHomeAsUpEnabled(true)
        actionbar.setDisplayShowHomeEnabled(true)
        actionBar.setHomeAsUpIndicator(R.drawable.logout)
    }
    
  4. 覆盖onOptionItemSelected并执行您的功能

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            android.R.id.home ->  
                FirebaseAuth.getInstance().signOut()
                val i = Intent(context, Login::class.java)
                startActivity(i)
                true
        }
        return true
    }