Изменить цвет фона меню Android [дублировать
-
01-10-2019 - |
Вопрос
Этот вопрос уже имеет ответ здесь:
Я пытаюсь изменить стандартный светло-серый на светло-зеленый. Похоже, что не просто простой способ сделать это (через темы Android), но я нашел обходной путь, как объяснено на этой странице: http://tinyurl.com/342dgn3..
Автор кажется исчез, может ли кто-нибудь помочь мне интегрировать этот код? Я не понимаю, где мне нужно реализовать LayoutInflater
заводский класс.
Решение
Когда у вас надуваются меню, вызовите этот метод Setmanubackgroundground ()
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu,menu);
setMenuBackground();
return true;
}
и напишите это на методе setmanubackgroungroundground ()
protected void setMenuBackground(){
// Log.d(TAG, "Enterting setMenuBackGround");
getLayoutInflater().setFactory( new Factory() {
public View onCreateView(String name, Context context, AttributeSet attrs) {
if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
try { // Ask our inflater to create the view
LayoutInflater f = getLayoutInflater();
final View view = f.createView( name, null, attrs );
/* The background gets refreshed each time a new item is added the options menu.
* So each time Android applies the default background we need to set our own
* background. This is done using a thread giving the background change as runnable
* object */
new Handler().post( new Runnable() {
public void run () {
// sets the background color
view.setBackgroundResource( R.color.androidcolor);
// sets the text color
((TextView) view).setTextColor(Color.BLACK);
// sets the text size
((TextView) view).setTextSize(18);
}
} );
return view;
}
catch ( InflateException e ) {}
catch ( ClassNotFoundException e ) {}
}
return null;
}});
}
Другие советы
Это ясно, что проблема имеет множество программистов, и к которой Google еще предстоит обеспечить удовлетворительное, поддерживаемое решение.
Setmanubackground () Hack, который Abhay Kumar и Nik Reiman опубликовал, является хорошим началом, но это либо вылетает, либо не работает на Android 2.3.
Пожалуйста, смотрите мой ответ (Louis Semprini) в этом вопросе Stackoverflow для лучшего прокомментированного и более усовершенствованного взлома, который работает на 2.1, 2.2 и 2.3 (и что не должен не навредить на 3.x, хотя мы никогда не можем гарантировать это):
Как изменить цвет фона меню параметров?
Кроме того, вот много других ресурсов, которые вы можете найти полезным для этого вопроса:
Изменить цвет фона меню Android
Android: настроить меню приложения (например, цвет фона)
http://www.macadamian.com/blog/post/android_-_theming_the_unthemable/
Android menuemem toggle кнопка
Можно ли сделать фон меню параметров Android не полупрозрачным?
http://www.codeproject.com/kb/android/androidmenusmyway.aspx.
Используйте SetMenubackground в OnCreate.