Androidアクションバー互換
性は可能ですか?古いデバイス(3.0より前)では、アクションバーに適合しないアイテムは、メニューキーが押されたときにのみ表示されます。これらのアイテムを、アクションバーのオーバーフローメニューにグループ化する必要があります。
3 に答える
アクション オーバーフロー メニューは、デバイスで使用できるハード メニュー ボタンがない場合にのみ使用できます。これは、フレームワーク トピックの [ユーザー インターフェイス] > [アクション バー] の下に記載されています。ここで3 番目の箇条書きを確認してください。
Jake Whartonによって作成されたActionBarSherlockというアクション バー ライブラリがあります。おそらくこれにより、古いデバイス (ハード メニュー ボタンを含む) でもアクション オーバーフロー メニュー スタイルが提供される可能性がありますが、私はこれについて調べていません。
編集: ActionBarSherlock 4.0 (現在はリリース候補) には、アクション オーバーフローを強制する機能が組み込まれています。ActionBarCompat の例を自分で拡張したい場合は、github を調べて、Jake がどのように実装したかを理解してください。彼のライブラリは非常によくできているので、一緒に使用することを検討することをお勧めします。
Jake のライブラリを使用する場合は、Activity テーマを @style/Theme.Sherlock.ForceOverflow として設定して、古いデバイスでオーバーフロー メニューを強制することを検討してください。
Edit2:テーマを使用すると、ハードウェア メニュー ボタンを備えたデバイスでForceOverflow
問題が発生します (例 #1 )。したがって、Jake Wharton はForceOverflow
将来のバージョンで削除される予定です。
さて、これは単純ですが、理解するのは難しいです。
まず、オーバーフローインフレータとして使用するメニュー項目が必要です。例
<item
android:id="@+id/a_More"
android:icon="@drawable/more"
android:showAsAction="always"
android:title="More">
</item>
アイテムを入手したら、オーバーフローメニューに必要なアイテムを含むサブメニューを追加します。例:
<item
android:id="@+id/a_More"
android:icon="@drawable/more"
android:showAsAction="always"
android:title="More">
<menu>
<item
android:id="@+id/aM_Home"
android:icon="@drawable/home"
android:title="Home"/>
</menu>
</item>
クリックすると、これは内の他のアイテムを膨らませます。私のアプリケーションはActionBarSherlock4.0を使用しているため、これが機能する前に、「SplitActionBar」にアクセスする必要があります。(デフォルトのAndroidアクションバーでも引き続き機能します)
方法は次のとおりです。AndroidManifest.xmlファイルで、オーバーフローメニューが必要なアクティビティの下にこのコードを追加する必要があります。正直なところ、アクションバーが分割されているかどうかは関係ありませんが、私はそれを好みます。
android:uiOptions="splitActionBarWhenNarrow"
注:オーバーフローメニューを膨らませるアイテムは、showAsAction="always"
Vwola!オーバーフローメニューがあります!私があなたを助けてくれたことを願っています。:)