オーバーフロードロップダウンメニューにメニュー項目のタイトルに加えてアイコンを表示したい。
可能ですか?
オーバーフロードロップダウンメニューにメニュー項目のタイトルに加えてアイコンを表示したい。
可能ですか?
このような答えは嫌いですが、私はもっと良い答えを出すのに十分ではありません。
メニューのオーバーフロー項目のアイコンは、submenu2行「subMenu2Item.setIcon(R.drawable.ic_launcher);」です。ic_launcherをアイコンファイル(プログラムのres drawableディレクトリ内)に置き換えるだけです。ActionBarSherlockを使用することを意味します。
行subMenu1Item.setIcon(R.drawable.ic_launcher); 上部のメニューボタンのアクションバーアイコン用です。
「これは設計上不可能です」への応答
グーグルが世界を乗っ取ろうとし、コートの尻尾に乗せてくれたことに感謝しますが、しかし...グーグルは一貫性がありすぎて、矛盾に不機嫌になることはできません。Googleが提供するAPIのすべての「セット」の例を作成できれば素晴らしいと思います。コードへのAPI参照はありますが、それらを組み合わせる方法についての例はありません。APKとして実行できる完全に機能する例がすべて私が望むものです。私はそこからそれをだますことができます。彼らがAPKを書くのに時間がかかるとしたら、標準のテンプレートに小さな例をコーディングするのはどれほど難しいでしょうか?すべての30%については、要求することはそれほど多くありません。当時、私はマイクロソフトと同じ議論をしていましたが、それも起こりませんでした。したがって、スタックオーバーフローが発生します。:
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
SubMenu subMenu1 = menu.addSubMenu("Action Item");
subMenu1.add("Help");
subMenu1.add("About");
MenuItem subMenu1Item = subMenu1.getItem();
subMenu1Item.setIcon(R.drawable.ic_launcher);
subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
SubMenu subMenu2 = menu.addSubMenu("All Options");
subMenu2.add("Help");
subMenu2.add("About");
MenuItem subMenu2Item = subMenu2.getItem();
subMenu2Item.setIcon(R.drawable.ic_launcher);
return super.onCreateOptionsMenu(menu);
}
多分あなたは私と同じ問題を抱えています。したがって、AppCompat を使用している場合、このプロパティを使用しないでください。
android:showAsAction="always"
代わりに、次のように使用します。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/option"
android:title="@string/option"
android:icon="@drawable/option"
app:showAsAction="always">
</item>
</menu>
追加のxmlns:appとshowAsActionに違いがあり、 appのプロパティです。
それが誰かを助けることを願っています。
これは設計上不可能です (少なくとも HC では - API 16 で開発していて、アイコンも取得していません)。Google は、私たちがそれを行うことを望んでいません。
このトピックに関する少しの議論については、ここで関連する回答を参照してください。
コメントの 1 つが示唆しているように、アイコンが必要な場合は、オーバーフロー メニューではなく、ドロップダウン メニューの使用を検討してください。