尝试隐藏和显示操作栏上的菜单项 [英] Trying to hide and show menu items on action bar
问题描述
我浏览了有关堆栈溢出的问题,找不到解决方法.
I have looked through the questions on stack overflow and can't find the solution.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.themenu, menu);
MenuItem item = menu.findItem(R.id.menu_settings);
MenuItem item2 = menu.findItem(R.id.menu_save);
item.setVisible(isdown);
item2.setVisible(isdown);
return true;
}
这会将我的菜单项设置为可见(item1和item2). onclick可以正常工作
This sets my menu items to visible (item1 and item2). the onclick works fine
public void inflateTextarea() {
if(isdown == true) {
isdown = false;
LinearLayout tl = (LinearLayout)findViewById(R.id.content);
tl.setVisibility(View.VISIBLE);
ScaleAnimation scale = new ScaleAnimation(1, 1, 0, 1);
scale.setFillAfter(true);
scale.setDuration(500);
tl.startAnimation(scale);
}
}
然后将我的isdown布尔值设置为false.在堆栈上,人们说onPrepareOptionsMenu应该在每次单击时触发,但事实并非如此. 我可以在onclick函数上隐藏一个菜单项
Then this sets my isdown boolean to false. on stack people say that the onPrepareOptionsMenu should fire everytime I click but this is not the case. I am able to hide one menu item on the onclick function
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_settings:
Log.v("Log:","edit_item pressed");
return true;
}
}
但是我有多个菜单项需要隐藏,而其他菜单项则需要显示. 我该怎么办?
But I have multiple menu items that I need to hide and others that I want to show. how can I go about this?
推荐答案
仅更改isDown
变量还不够.每次要更改可见性时,都必须调用setVisible()
方法.该方法不仅可以设置布尔值,还可以改变布尔值.
Its not enough to change the isDown
variable. You have to call the setVisible()
method every time you want to change the visibility. That method does more than just setting a boolean value, so just changing a boolean value will not do.
将isDown
值更改为false后,您需要调用invalidateOptionsMenu()
,这将通过再次调用onPrepareOptionsMenu()
重新启动菜单.
After changing the isDown
value to false, you need to call invalidateOptionsMenu()
which will re-launch the menu by calling onPrepareOptionsMenu()
again.
尝试使用以下代码使菜单项不可见:
Try this code for making the menu items unvisible:
...
isdown = false;
invalidateOptionsMenu();
...
这篇关于尝试隐藏和显示操作栏上的菜单项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!