如何修复 android 工具栏中的重复项目,(需要删除工具栏上的菜单项)?
How to fix duplicate item in android tool bar ,(need to remove menu items on toolbar)?
我试图隐藏位于 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);
}
这是 xml 相关文件 java class:
<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>
您将菜单膨胀了两次。一次在 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
上做 else-if
所以我会把它转换成一个开关并清理你的代码。现在它应该看起来像
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;
}
}
我试图隐藏位于 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);
}
这是 xml 相关文件 java class:
<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>
您将菜单膨胀了两次。一次在 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
上做 else-if
所以我会把它转换成一个开关并清理你的代码。现在它应该看起来像
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;
}
}