2015-09-15 14 views
1

我想顯示搜索圖標並在我的操作欄中添加圖標,添加圖標具有溢出按鈕的功能,並且菜單項具有圖標。溢出按鈕無法更改爲添加圖標

但我有一個問題:溢出按鈕的圖標不能變成添加圖標,並且菜單項沒有圖標。

這是我的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 ex往往AppCompatActivity,

import android.support.v7.app.AppCompatActivity;

我試圖改變在MainActivity延伸活動,並改變styles.xml

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

但結果是搜索按鈕可以在動作條不顯示,但顯示在溢出按鈕,幸運的是,菜單項的圖標有顯示,所以我改變了搜索按鈕的應用程序:showAsAction =「總是| collapseActionView」,但它不工作

回答

0

使用您的onMenuOpened()方法的後續功能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); 
     }