我想在菜单项上显示徽章。我该怎么做?
基本上,我不想绘制或使用画布来这样做。
答案 0 :(得分:1)
您可以尝试创建LayerListDrawable
,将常规图标作为第一层,将徽章作为第二层,然后在setIcon()
上使用MenuItem
。
答案 1 :(得分:0)
Menuitem有一个属性图标,例如:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/mi_main_preferences"
android:title="@string/cmd_preferences"
android:icon="@android:drawable/ic_menu_preferences">
</item>
</menu>
以上示例使用系统图标(首选项菜单)。
答案 2 :(得分:0)
可以自定义Android中的选项菜单以设置背景或更改文本外观。使用主题和样式无法更改菜单中的背景和文本颜色。
Android源代码(data\res\layout\icon_menu_item_layout.xml
)使用“com.android.internal.view.menu.IconMenuItem”类的自定义项来查看菜单布局。我们可以在上面的类中进行更改以自定义菜单。要实现相同目的,请使用LayoutInflater
工厂类并为视图设置背景和文本颜色。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_menu, menu);
getLayoutInflater().setFactory(new Factory() {
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
if (name .equalsIgnoreCase(“com.android.internal.view.menu.IconMenuItemView”)) {
try{
LayoutInflater f = getLayoutInflater();
final View view = f.createView(name, null, attrs);
new Handler().post(new Runnable() {
public void run() {
// Set the background drawable
view .setBackgroundResource(R.drawable.my_ac_menu_background);
// Set the text color
((TextView) view).setTextColor(Color.WHITE);
}
});
return view;
}
catch (InflateException e) {
}
catch (ClassNotFoundException e) {
}
}
return null;
}
});
return super.onCreateOptionsMenu(menu);
}