我想根据变量在ActionBar中隐藏图标。有没有简单的方法可以做到这一点?
我需要使用onPrepareOptionsMenu()
吗?
最佳答案
若要隐藏菜单项,应在菜单膨胀后在活动setVisible()
替代内的菜单项上使用onPrepareOptionsMenu()
方法。例如:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example, menu);
if(showItem) {
menu.findItem(R.id.icon).setVisible(true);
} else {
menu.findItem(R.id.icon).setVisible(false);
}
return true;
}
如果在
onCreate()
中声明了变量,则该变量将限制在onCreate()
的范围内,因此在onPrepareOptionsMenu()
中不可访问。例如,代替此:
@Override
protected void onCreate(Bundle savedInstanceState) {
boolean showItem = false;
// ...
}
像这样声明:
public boolean showItem = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
}
另外,例如,如果您想更改按钮按下时的可见性,则需要调用
invalidateOptionsMenu()
方法来重新加载菜单。关于android - 如何从ActionBar隐藏图标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23033850/