我想根据变量在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/

10-12 06:13