溢出按钮无法更改为添加图标

时间:2015-09-15 07:18:56

标签: android android-actionbar overflow

我想在我的操作栏中显示搜索图标并添加图标,添加图标具有溢出按钮功能,菜单项有图标。

但我有一个问题:溢出按钮的图标无法进入添加图标,菜单项也没有图标。

这是我的styles.xml`

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionOverflowButtonStyle">@style/OverflowButtonStyle</item>
</style>

<style name="OverflowButtonStyle">
    <item name="android:src">@mipmap/actionbar_add_icon</item>
    <item name="android:paddingRight">10dp</item>
</style>

` 这是我的menu_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

<item
    android:id="@+id/action_search"
    android:icon="@mipmap/actionbar_search_icon"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:title="@string/action_search"
    app:showAsAction="ifRoom|collapseActionView"
    />

<item
    android:id="@+id/menu_group_chat"
    android:icon="@mipmap/menu_group_chat_icon"
    android:title="@string/menu_group_chat"
    />

<item
    android:id="@+id/menu_add_friend"
    android:icon="@mipmap/menu_add_icon"
    android:title="@string/menu_add_friend"
    />

<item
    android:id="@+id/menu_scan"
    android:icon="@mipmap/menu_scan_icon"
    android:title="@string/menu_scan"
    />

<item
    android:id="@+id/menu_receive_money"
    android:icon="@mipmap/menu_receive_money"
    android:title="@string/menu_receive_money"
    />

<item
    android:id="@+id/menu_feedback"
    android:icon="@mipmap/menu_feedback_icon"
    android:title="@string/menu_feedback"
    />

这是我的onMenuOpened()方法:

public boolean onMenuOpened(int featureId, Menu menu) {

    if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
        if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
            try {
                Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
                m.setAccessible(true);
                m.invoke(menu, true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    return super.onMenuOpened(featureId, menu);
}

我使用android studio,API 19,MainActivity扩展AppCompatActivity,

import android.support.v7.app.AppCompatActivity;

我尝试更改MainActivity extends Activity,并更改styles.xml

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

但结果是搜索按钮无法显示在操作栏中但显示在溢出按钮中,幸运的是,菜单项的图标已显示,因此我更改了搜索按钮app:showAsAction =&#34; always | collapseActionView&#34;,但它没有工作

1 个答案:

答案 0 :(得分:0)

使用onMenuOpened()方法的follow函数instand:

@Override
        protected boolean onPrepareOptionsPanel(View view, Menu menu) {
            if (menu != null) {
                if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
                    try {
                        Method m = menu.getClass().getDeclaredMethod(
                                "setOptionalIconsVisible", Boolean.TYPE);
                        m.setAccessible(true);
                        m.invoke(menu, true);
                    } catch (Exception e) {
                        Log.e(getClass().getSimpleName(), "onMenuOpened...unable to set icons for overflow menu", e);
                    }
                }
            }
            return super.onPrepareOptionsPanel(view, menu);
        }