没有ID或菜单项xml时如何在工具栏中隐藏3点图标

时间:2019-04-05 20:21:03

标签: android android-layout

这个问题已经问了很多遍,但是我似乎无法隐藏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>

2 个答案:

答案 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;
}