Android 如何隐藏选项菜单

Android 如何隐藏选项菜单,android,android-optionsmenu,Android,Android Optionsmenu,当导航抽屉打开时,我试图隐藏选项菜单。我该怎么做?hide()不起作用,我已经尝试了一些变体 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_write" android:title="Write" android:showAsAction="always" />

当导航抽屉打开时,我试图隐藏选项菜单。我该怎么做?
hide()
不起作用,我已经尝试了一些变体

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_write"
          android:title="Write"
          android:showAsAction="always"
            />

</menu>


public final class OptionsMenu{
    private Menu menu;

    public void onCreateOptionsMenu(MenuInflater inflater, Menu menu) {
        inflater.inflate(R.menu.sample, menu);
        this.menu = menu;
    }

    public boolean onMenuItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            default:
                return false;
        }
    }

    public void hide(){
        menu.findItem(R.id.menu_points).setVisible(false); //Doesn't work
    }
}

公共期末课程选项菜单{
私人菜单;
public void onCreateOptions菜单(菜单充气机,菜单菜单){
充气机。充气(右菜单。样品,菜单);
this.menu=菜单;
}
公共布尔值onMenuItemSelected(MenuItem项){
开关(item.getItemId()){
违约:
返回false;
}
}
公共空间隐藏(){
menu.findItem(R.id.menu_points).setVisible(false);//不起作用
}
}
试试这个

private boolean isDrawerOpened; // Global variable
执行
DrawerListener

drawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {

    @Override
    public void onDrawerOpened(View view) {
        isDrawerOpened = true;
        invalidateOptionsMenu();
    }

    @Override
    public void onDrawerClosed(View view) {
        isDrawerOpened = false;
        invalidateOptionsMenu();
    }
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    if (!isDrawerOpened) {
        getMenuInflater().inflate(R.menu.sample, menu);
    }
    return true;
}
并在创建选项菜单中验证抽屉布局的状态

drawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {

    @Override
    public void onDrawerOpened(View view) {
        isDrawerOpened = true;
        invalidateOptionsMenu();
    }

    @Override
    public void onDrawerClosed(View view) {
        isDrawerOpened = false;
        invalidateOptionsMenu();
    }
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    if (!isDrawerOpened) {
        getMenuInflater().inflate(R.menu.sample, menu);
    }
    return true;
}
使用
关闭选项菜单()
关闭选项菜单

答案在这里


如果选项菜单的弹出窗口被展开,您是要折叠它,还是只想禁用整个菜单的可打开性?使用
closeoptions菜单()
以编程方式关闭菜单选项我想在导航抽屉打开时隐藏整个选项菜单,然后在导航抽屉关闭时显示它在这里调用hide()方法?什么是菜单对象?移动
menu.findItem(R.id.menu\u点)。设置可见(false)转到创建选项菜单上的
并再次测试