所以,这就是我想知道的.如何在Android中以编程方式设置菜单的可见性?这就是我的菜单:
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId()){
case R.id.menuregistrar:
break;
case R.id.menusalir:
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是这个代码不在onCreate上,所以我不知道如何以编程方式设置一个项目可见或不可见(在我的情况下,我希望"menuregistrar"在我注册我的应用程序后永远不可见.
Adi*_*mro 134
把这个方法放在你的 Activity
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuItem register = menu.findItem(R.id.menuregistrar);
if(userRegistered)
{
register.setVisible(false);
}
else
{
register.setVisible(true);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在较短的版本中你可以写:
MenuItem register = menu.findItem(R.id.menuregistrar);
register.setVisible(!userRegistered); //userRegistered is boolean, pointing if the user has registered or not.
return true;
Run Code Online (Sandbox Code Playgroud)
我将进一步简化Adil的解决方案,具体如下:
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuItem registrar = menu.findItem(R.id.menuregistrar);
registrar.setVisible(!isRegistered);
return true;
}
Run Code Online (Sandbox Code Playgroud)
小智 6
只需做一件事,从这一行获取菜单项的 id:
Menu menu =navigationView.getMenu();
MenuItem nav_dashboard = menu.findItem(R.id.nav_dashboard);
Run Code Online (Sandbox Code Playgroud)
然后根据您的意愿通过这一行使其可见:
nav_dashboard.setVisible(true/false);
Run Code Online (Sandbox Code Playgroud)
小智 5
菜单对象具有使用 setVisible(boolean)// 设置菜单项的可见性的属性
例子
private Menu menu_change_language;
...
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
...
menu_change_language = menu;
...
...
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
使用下面的代码隐藏菜单项:
if(menu_change_language != null){
menu_change_language.findItem(R.id.menu_change_language)
.setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75886 次 |
| 最近记录: |