By default Android shows Orange color on Options Menu when an item is selected.
如何在单击时将自己的颜色设置为 OptionsMenu?
By default Android shows Orange color on Options Menu when an item is selected.
如何在单击时将自己的颜色设置为 OptionsMenu?
可以自定义 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.setBackgroundColor(any color);
}
});
return view;
} catch (InflateException e) {
} catch (ClassNotFoundException e) {}
}
return null;
}
});
return super.onCreateOptionsMenu(menu);
}
selector.xml
在您的文件夹中创建一个名为 xml 的文件,drawable
然后用它填充它..
Button
基本上,您是在告诉 Android,当用户单击 a或将其聚焦等事件发生时,您想要做某事......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@color/blue" /> <!-- focused -->
<item android:state_focused="true" android:state_pressed="true" android:drawable="@color/blue" /> <!-- focused and pressed-->
<item android:state_pressed="true" android:drawable="@color/green" /> <!-- pressed -->
<item android:drawable="@color/white" /> <!-- default -->
</selector>
然后将您在菜单中使用的项目的图标设置为此,例如
android:icon = "@drawable/selector"
,
有关使用 StateListDrawable 的更多信息,请参阅此。