我试图隐藏一些菜单项目位于android工具栏。我已经实现了以下代码:
MenuItem beaconIconMenuItem =
toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
beaconIconMenuItem.setVisible(false);当我试图编译代码时,没有错误,但是不是删除工具栏,而是删除两次。
这是我的源代码:
private void setupToolbar() {
toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
if (getResources().getString(R.string.app_name).equalsIgnoreCase("PNM e-Reader")){
toolbar.setTitle("My Books");
}else {
toolbar.setTitle(getString(R.string.booklist_drawer_mylibrary));
}
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
// if kpm app , hide beacon icon on toolbar
if (getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
MenuItem beaconIconMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
beaconIconMenuItem.setVisible(false);
//if kpm app , hide filter icon on toolbar
}else if
(getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
MenuItem filterMenuItem = toolbar.getMenu().findItem(R.id.common_menu_filter);
filterMenuItem.setVisible(false);
//if kpm app , hide new collection selection under settings icon on toolbar
}else if
(getResources().getString(R.string.app_name).equalsIgnoreCase("KPM")){
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
MenuItem newcollectionMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_addtab);
newcollectionMenuItem.setVisible(false);
}这是相关java类的xml文件:
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/booklist_mylibrary_menu_beacon"
android:title="@string/beacon_switch"
android:id="@+id/common_menu_filter"
android:title="@string/common_filter"
android:id="@+id/booklist_mylibrary_menu_addtab"
android:title="@string/booklist_tab_add"
app:showAsAction="never" />
<item
</menu>发布于 2018-12-12 04:01:50
你在给菜单充气两次。在if语句之前一次,在if语句中一次
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);您将在if语句之前和if语句中调用此语句。
从if语句中删除它。
Resources resources = getResources();
if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
MenuItem beaconIconMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_beacon);
beaconIconMenuItem.setVisible(false);
//if kpm app , hide filter icon on toolbar
} else if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
MenuItem filterMenuItem = toolbar.getMenu().findItem(R.id.common_menu_filter);
filterMenuItem.setVisible(false);
//if kpm app , hide new collection selection under settings icon on toolbar
} else if (resources.getString(R.string.app_name).equalsIgnoreCase("KPM")) {
MenuItem newcollectionMenuItem = toolbar.getMenu().findItem(R.id.booklist_mylibrary_menu_addtab);
newcollectionMenuItem.setVisible(false);
}看起来就像您唯一在kpm上执行kpm一样,所以我将把它转换成一个开关,并清理您的代码。现在它应该看起来像
private void setupToolbar() {
toolbar = (Toolbar) getView().findViewById(R.id.toolbar);
String appName = getResources().getString(R.string.app_name).toLowerCase();
toolbar.setTitle(appName.equals("pnm e-reader") ? "My Books" : getString(R.string.booklist_drawer_mylibrary));
toolbar.inflateMenu(R.menu.booklist_mylibrary_menu);
switch (appName) {
case "kpm":
Menu menu = toolbar.getMenu();
MenuItem beaconIconMenuItem = menu.findItem(R.id.booklist_mylibrary_menu_beacon);
MenuItem filterMenuItem = menu.findItem(R.id.common_menu_filter);
MenuItem newcollectionMenuItem = menu.findItem(R.id.booklist_mylibrary_menu_addtab);
beaconIconMenuItem.setVisible(false);
newcollectionMenuItem.setVisible(false);
filterMenuItem.setVisible(false);
break;
}
}https://stackoverflow.com/questions/53735786
复制相似问题