这个问题已经问了很多遍,但是我似乎无法隐藏3点图标。
action_settings
中没有menu_main.xml
菜单项,但是设置图标仍然出现。
我无法将其隐藏在onPrepareOptionsMenu
中,因为该图标没有ID
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item= menu.findItem(R.id.menu_settings);
item.setVisible(false);
super.onPrepareOptionsMenu(menu);
return true;
}
我的主要活动开始:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_default"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar_actionbar">
<LinearLayout
....
布局toolbar_default
是
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:appcompat="http://schemas.android.com/apk/res-auto"
style="@style/ToolBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="@dimen/abc_action_bar_default_height_material"/>
和menu_main.xml
是
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:appcompat="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_search"
android:title="@string/menu_search"
appcompat:actionViewClass="android.support.v7.widget.SearchView"
appcompat:showAsAction="always"/>
</menu>
和ToolBarStyle
<style name="ToolBarStyle" parent="">
<item name="popupTheme">@style/ThemeOverlay.AppCompat</item>
<item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
<style name="CustomPrefTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:checkboxStyle">@style/AppTheme.Preference.Checkbox</item>
</style>
答案 0 :(得分:1)
将菜单动态设置为工具栏
Toolbar yourToolBar = (Toolbar) findViewById(R.id.my_toobar);
setSupportActionBar(yourToolBar);
yourToolBar.inflateMenu(R.menu.search_menu);
yourToolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.search) {
// handle search logic here
}
return true;
}
});
代替
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item= menu.findItem(R.id.menu_settings);
item.setVisible(false);
super.onPrepareOptionsMenu(menu);
return true;
}
您可能应该这样做
// This will hide the overflow menu icon
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return false;
}
答案 1 :(得分:0)
从这里https://stackoverflow.com/a/12253892/4858147尝试隐藏R.id.action_settings
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item= menu.findItem(R.id.action_settings);
item.setVisible(false);
super.onPrepareOptionsMenu(menu);
return true;
}