Android:カスタマイズ用のメニュー。g背景色)
-
22-09-2019 - |
質問
何という)をカスタマイズするには、メニューによりメニューボタンを押すと電話).私の関心は二つのことをやろうとしてい
- 変化のバックグラウンドカラーが明示的に標準ライトグレーに濃いグレー
- どのようにメニューも揃えております。私は4つの項目が自動的に揃って2x2、そういった一つの線(1x4)
解決
ないと、組み込みのメニューの枠組みます。
あなたは(onKeyDown()
か何か経由)MENUボタンを傍受し、あなたが望むものをレンダリングするために歓迎されているが、ユーザーはそれがメニューの残りの部分のように見えることを期待されることを念頭に置いてクマは自分のデバイス上で行う。
他のヒント
私は自分のメニュークラスを作成しました。それは多分正確に何をしたいではありませんが、それがうまくいけば、あなたが始める必要があります。ここに私が掲載された記事とソースコードへのダウンロードリンクです。
http://www.codeproject.com/KB/android/AndroidMenusMyWay.aspx
また、ちょうどあなたがこのような場合には、好きな「onCreateOptionsMenu」通常、標準的なメニューを表示するために使用される方法、および表示を実現することができます。
私のゲームでは、私は、メニューボタンが押されたときに...
「ゲーム一時停止」ダイアログボックスを表示するためにそれを実装しましたを使用するスタイル。 アンドロイド5.0で、私にとってこの作品
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:actionOverflowMenuStyle">@style/PopupMenu.MyStyle</item>
</style>
<style name="PopupMenu.MyStyle" parent="android:Widget.PopupMenu">
<item name="android:popupBackground">@drawable/actionbar_item_background</item>
</style>
...その後描画可能で、通常のセレクタである。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/primary"/>
<item android:drawable="@color/highlighted" android:state_pressed="true"/>
</selector>
style.xmlで
背景メニューの色 あなたのテーマでの
<item name="android:panelFullBackground">@android:color/darker_gray</item>
この回答の作品が、ActionBarSherlockを使用しているときに私のために墜落しました。ここでは、この作業nonthelessを作るためのハック回避策があります。
// Black Vodoo! Do not try this at home.
final LayoutInflater li = getLayoutInflater();
final Class<LayoutInflater> clazz = LayoutInflater.class;
try {
final Field fieldSet = clazz.getDeclaredField("mFactorySet");
fieldSet.setAccessible(true);
fieldSet.setBoolean(li, false);
li.setFactory(new Factory() {
@Override
public View onCreateView(final String name,
final Context context, final AttributeSet attrs) {
if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
final LayoutInflater f = getLayoutInflater();
final View view = f.createView(name, null, attrs);
new Handler().post(new Runnable() {
@Override
public void run() {
// Set the text color
((TextView) view).setTextColor(Color.WHITE);
}
});
return view;
} catch (final Exception e) {
}
}
return null;
}
});
} catch (final Exception e) {
e.printStackTrace();
}
所属していません StackOverflow