3

我正在尝试动态设置菜单的标题。

检索并设置它:

ItemView menuTitle = ((ItemView) findViewById(R.id.menu_filter));
menuTitle.setTitle("TITLE_HERE");

只要它在onOptionsItemSelected(MenuItem item)方法中就可以正常工作。

我还没有找到一种方法来从onPrepareOptionsMenuoronCreateOptionsMenu方法中将其设置为findViewById返回 null (即使在膨胀菜单之后)。

奇怪的是,文档中似乎没有任何内容可以实现这一点,而且对于这样一个看似简单的问题,谷歌搜索也没有出现太多。

4

4 回答 4

4

我一定是刚刚发呆,并没有意识到菜单中有一个名为 findItem 的函数......

menu.findItem(R.id.MENU_TITLE).setTitle("MY TITLE");
于 2013-10-28T09:06:47.273 回答
2

只需使用:

        getSupportActionBar().setTitle("YOUR TITLE HERE");

create内部,在初始化 ui 或 viewbinding 或 databinding 之后。

于 2020-05-23T09:33:20.073 回答
1

要动态设置菜单标题,您可以在 onCreateOptionsMenu 中执行此操作:

public boolean onCreateOptionsMenu(Menu menu) 
{
      menu.add(Menu.NONE, MyActivity.MENU_ID, 0, "Your Title").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
    return (true);
}

并且随着条件的变化(即您的标题需要更改),请致电

invalidateOptionsMenu();

在您的活动上,它将调用 onCreateOptionsMenu 并设置新标题。

于 2013-10-27T12:22:10.793 回答
0

我正在从onPrepareOptionMenu下面的代码中更改菜单的标题。这是我的片段中的代码,我认为这也应该适用于活动。

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

override fun onPrepareOptionsMenu(menu: Menu) {
    super.onPrepareOptionsMenu(menu)
    if (count == 1) {
        menu.findItem(R.id.screen_count).title = "1/3"
    } else {
        menu.findItem(R.id.screen_count).title = "xyz/3"
    }
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.ic_edit -> {
            // handle click event here
        }
    }
    return super.onOptionsItemSelected(item)
}
于 2020-05-24T15:42:41.170 回答