我创建了一个PopLingMenu,它膨胀了一个LinearLayout的OnClick。我希望菜单项具有特定的textColor
和textSize
;但是,菜单项似乎有一组非常有限的XML属性,我找不到引用样式的方法。有什么想法吗?
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 :(得分:2)
我会给你一个更详细的答案。
PopupMenu是这样创建的,
PopupMenu popupMenu = new PopupMenu(context, anchorView);
现在&#34;上下文&#34;这里在造型方面起着非常重要的作用。 PopupMenu的样式取决于您传递的上下文的样式。所以要非常小心。我浪费了差不多一半时间来搞清楚这一点。
如果你在一个片段中,只需传递&#34; getActivity()&#34;你完成了。
PopupMenu项目的样式
只需覆盖您的风格中的以下项目,
<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>
高级样式
PopupMenu项目默认不支持显示图标。但是显示图标可以让它看起来更好。我建议尝试一下。
要实现这一点,只需在您的活动中添加以下代码,就可以了,
@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);
}
虽然样式选项非常有限,但您仍然可以自定义一些基本属性。
答案 1 :(得分:0)
据我所知..菜单项的文字不会改变..
所以..大多数APP使用菜单项的基本文本..
这只是我想......