背景色を変えるandroidのメニューの[複製]
-
01-10-2019 - |
質問
この質問に答えはこちら
私を変えようとしているの標準グレーには、黄緑色。があるような簡単なこ(Androidのテーマ、例えば)いました回避策としての説明がこのページ: http://tinyurl.com/342dgn3.
著者らしい姿を消し、誰か助けてくれ統合にこのコードについて教えてください。かわからないかを実装する必要があるとの LayoutInflater
工場でクラスです。
解決
時には何が膨らませたり、吸い込んだメニューを呼ぶこsetMenuBackground()メソッド
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu,menu);
setMenuBackground();
return true;
}
を書このsetMenuBackground()メソッド
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が提供する満足のいく対応。
のsetMenuBackground()ハックするAbhay KumarやNik躍を掲載し始めてくださいがいはクラッシュなAndroid2.3.
ご自由にお使いください回答(ルイSemprini)このstackoverflowの質問のより良い、より洗練されたハッキングすることが2.1,2.2 2.3(やるから害にならない3.Xはなかったものでないことを保証す):
どのように背景色を変えるオプションのメニューにたどり着けるのか!?
また、ここには他に多くの資源をいがありその問題について:
http://www.macadamian.com/blog/post/android_-_theming_the_unthemable/
によって行うことができるAndroid用オプションメニューの背景の不透明感のあ?
http://www.codeproject.com/KB/android/AndroidMenusMyWay.aspx
利用のsetMenuBackgroundにonCreate.