2013-10-03 57 views
0

我創建了一個PopupMenu,它是一個LinearLayout的OnClick。我希望菜單項具有特定的textColortextSize;然而,菜單項似乎有一組非常有限的XML屬性,我找不到引用樣式的方法。有任何想法嗎?PopupMenu - 在菜單資源項中自定義文本(大小/顏色)

PopupMenu的:

customerMenu = (LinearLayout) view.findViewById(R.id.customerMenu); 
customerMenu.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     PopupMenu popup = new PopupMenu(getActivity(), customerMenu); 
     popup.getMenuInflater().inflate(R.menu.addcustomermenu, popup.getMenu()); 
     popup.show(); 
     } 
}); 

菜單資源:

RES /菜單/ addcustomermenu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/customerButtonOne" 
     android:title="Create New Customer" > 
    </item> 
    <item 
     android:id="@+id/customerButtonTwo" 
     android:title="Search Existing Customer"> 
    </item> 

</menu> 
+0

可能的重複:http://stackoverflow.com/questions/12636101/how-to-style-popupmenu – nedaRM

回答

0

據我知道的..文菜單項不會被更改..

所以..大部分APP的使用菜單項..

的基本文本,這只是我覺得..

1

我會給你更詳細的回答了這個問題。

的彈出菜單是這樣的創建,

PopupMenu popupMenu = new PopupMenu(context, anchorView); 

現在的「語境」在這裏扮演的造型非常重要的作用。 PopupMenu的風格取決於您傳遞的上下文的樣式。所以要非常小心。我幾乎花了半小時才弄清楚這一點。

如果你在一個片段只是通過「getActivity()」,你就完成了。

造型的彈出菜單項

只是覆蓋在你的風格以下項目,

<item name="textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item> 
<item name="android:textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item> 

<item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item> 
<item name="android:textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item> 

和定製你想要的文本外觀,

<style name="myPopupMenuTextAppearanceSmall" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"> 
      <item name="android:textColor">@color/text_hint_color</item> 
      <item name="android:textSize">@dimen/text_size</item> 
</style> 

<style name="myPopupMenuTextAppearanceLarge" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"> 
      <item name="android:textColor">@color/text_hint_color</item> 
      <item name="android:textSize">@dimen/text_size</item> 
</style> 

如果你想要更改PopupMenu的背景,請執行此操作

<item name="popupMenuStyle">@style/myPopupMenuStyle</item> 
    <item name="android:popupMenuStyle">@style/myPopupMenuStyle</item> 

高級造型

的彈出菜單項不支持默認顯示的圖標。但顯示圖標可以使它看起來好多了。我建議嘗試一下。

爲了實現這個剛剛把下面的代碼在你的活動,你是好去,

@Override 
    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 (NoSuchMethodException e) { 
        Log.e("tag", "onMenuOpened", e); 
       } catch (Exception e) { 
        throw new RuntimeException(e); 
       } 
      } 
     } 
     return super.onMenuOpened(featureId, menu); 
    } 

雖然樣式選項是相當有限的,但仍然可以很明顯的自定義一些基本屬性。

相關問題