Ниже приведен ужасный, ужасный взлом, чтобы изменить фоновое изображение меню - обратите внимание, что это изменит все фоны пунктов меню. Возможно, сейчас есть более простой способ сделать это, но это был единственный способ, который я нашел год или около того назад.
Настроить значок элемента меню намного проще, и это можно сделать в onPrepareOptionsMenu
// Hack to make the menu item selector blue
protected void setMenuBackground(final int id)
{
if(getLayoutInflater().getFactory() != null)
return;
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 li = getLayoutInflater();
final View view = li.createView(name, null, attrs);
//What?
//Well the Android system is going to set the background after this is method is done
//so we run it later to override the override. Simples?
new Handler().post(new Runnable()
{
public void run()
{
view.setBackgroundResource(id);
}
});
return view;
}
catch(InflateException e)
{
}
catch(ClassNotFoundException e)
{
}
}
return null;
}
});
}