有没有一种动态禁用、隐藏、添加/删除操作栏菜单项的方法?例如,在活动中,只有在用户填写了有效的电话号码后,才能启用一个操作。
我在ActionBar API中没有找到任何有用的方法,唯一的方法似乎是使用自定义视图。
有没有一种动态禁用、隐藏、添加/删除操作栏菜单项的方法?例如,在活动中,只有在用户填写了有效的电话号码后,才能启用一个操作。
我在ActionBar API中没有找到任何有用的方法,唯一的方法似乎是使用自定义视图。
要告诉ActionBar刷新其菜单项:invalidateOptionsMenu()
然后启用/禁用菜单项:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item= menu.findItem(R.id.men_1);
//depending on your conditions, either enable/disable
item.setEnabled(false);
super.onPrepareOptionsMenu(menu);
return true;
}
而要隐藏操作栏,您可以使用以下代码:
getActionBar().hide();
class MyActivity extends ActionBarActivity {
Menu actionBar;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
actionBar = menu;
return true;
}
//Possible usage
void showActionBar1 () {
getMenuInflater().inflate(R.menu.menu_1, actionBar);
actionBar.findItem(R.id.menu_1_btn_1).setOnMenuItemClickListener();
}
void showActionBar2 () {
getMenuInflater().inflate(R.menu.menu_2, actionBar);
...
}
void clearActionBar () {
if (actionBar != null) actionBar.clear();
}
onPrepareOptionsMenu
必须返回boolean
值,你必须返回 true 才能显示菜单;如果你返回 false,它将不会被显示。 - Mickey TinActionBarActivity
,则需要使用supportInvalidateOptionsMenu()
。 - IT-Dan