環境
メニュー構成でこのshowAsAction
プロパティについて誤解があるようです。多くのスタックオーバーフローの回答で見つけた情報は、常に不完全なようです。そこで、それを変えようという試みです。
スリードット | オーバーフロー | オプションメニュー
アクションバーに 3 つのドットのオーバーフロー メニューを表示するかどうかをコードで制御する方法はありません。
確かにオプションメニューを持たないことで、それを強制的に表示しないようにすることができます。そして、公平を期すために、これをハックすることができます。詳細については、メニューボタンのあるデバイスでオーバーフローメニューを強制的に使用する方法を参照してください
ドットが表示されるかどうかは、テストしているデバイスによって異なります。ユーザーはデバイスのメニュー ボタンを使用できるため、メニュー ボタンのあるデバイスでは、アクションバーに 3 つのドットのアイコンは表示されません。
このオプション メニュー ボタンを持たないデバイス (Galaxy 以降の nexus デバイスなど) には、そのオプション メニューをトリガーする代替手段がありません。これらのデバイスで同じアプリを実行すると、アクションバーに 3 つのドット オーバーフロー メニュー オプションが表示されます。
コントロールできること
showAsAction
メニュー xml ファイルには、単一のメニュー オプションがアクションバーにどのように表示されるかを制御するために使用できるオプションがあります。
公式メニュー リソース docによると、オプションは次のとおりです。
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
フラグは、ifRoom
十分なスペースがある場合にのみオプションを表示します。ほとんどの場合、これを最初に選択する必要があります。ただし、これにより、アクションバーのタイトルが圧縮されます (垂直方向のスクリーンショットを参照)。
フラグには、このnever
オプションが常にオーバーフロー メニューにあり、アクションバーに直接表示されることはありません。
フラグを使用するとalways
、オプションが acitonbar に常に表示されるようになるため、このフラグの使用は推奨されません。非常に小さな画面サイズで実行している場合でも。これにより、タイトルが完全に見えなくなる可能性があります。
android:title
オプション メニューにはと プロパティの両方を含めることができandroid:icon
ます。フラグをorwithText
と一緒に使用して (間にパイプを使用)、アイテムのテキストをアクションバーでレンダリングするときにアイコンの横に強制的に表示することができます。always
ifRoom
|
はcollapseActionView
からのみサポートされAPI level 14
ているため、無視させてください。
デバイスが縦向きモードで保持されている場合の動作中の以下のコード スニペットを示すスクリーンショット:
そして、横向きモードのおかげでアクションバーにより多くのスペースがある別のスクリーンショット:
Android ドキュメント
このアクションバーに関する最適な開発ドキュメントは、アクションバー ガイドです。デザイン ガイドラインをさらに探している場合は、このリンクをたどってください。メニュー リソースのリンクは以前に記載されていました。一般的なメニューについては、これを確認してください。
コードスニペット
その部分はほとんどの回答で正しいと思われるため、参照用のコードです。より完全な例は、https://github.com/AndroidExamples/fragment-navigationにあります。
/res/menu/main.xml
ファイルの内容:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="be.hcpl.android.example.MainActivity" >
<!-- an option that never appears as a fixed text/icon in the actionbar -->
<item android:id="@+id/action_one"
android:title="@string/action_one"
android:orderInCategory="100"
app:showAsAction="never" />
<!-- another option that only appears if there is enough room -->
<item android:id="@+id/action_two"
android:title="@string/action_two"
android:orderInCategory="200"
app:showAsAction="ifRoom" />
<!-- a last option that always appears -->
<item android:id="@+id/action_three"
android:title="@string/action_three"
android:orderInCategory="300"
app:showAsAction="always" />
<!-- an option to show with both icon and text -->
<item android:id="@+id/action_four"
android:icon="@android:drawable/ic_menu_directions"
android:title="@string/action_four"
android:orderInCategory="400"
app:showAsAction="withText|always" />
<!-- an option to always show as an icon only -->
<item android:id="@+id/action_five"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/action_five"
android:orderInCategory="500"
app:showAsAction="always" />
</menu>
いくつかのリンクされた回答