34

Androidアクションバー互換
性は可能ですか?古いデバイス(3.0より前)では、アクションバーに適合しないアイテムは、メニューキーが押されたときにのみ表示されます。これらのアイテムを、アクションバーのオーバーフローメニューにグループ化する必要があります。

4

3 に答える 3

46

アクション オーバーフロー メニューは、デバイスで使用できるハード メニュー ボタンがない場合にのみ使用できます。これは、フレームワーク トピックの [ユーザー インターフェイス] > [アクション バー] の下に記載されています。ここで3 番目の箇条書きを確認してください。

Jake Whartonによって作成されたActionBarSherlockというアクション バー ライブラリがあります。おそらくこれにより、古いデバイス (ハード メニュー ボタンを含む) でもアクション オーバーフロー メニュー スタイルが提供される可能性がありますが、私はこれについて調べていません。

編集: ActionBarSherlock 4.0 (現在はリリース候補) には、アクション オーバーフローを強制する機能が組み込まれています。ActionBarCompat の例を自分で拡張したい場合は、github を調べて、Jake がどのように実装したかを理解してください。彼のライブラリは非常によくできているので、一緒に使用することを検討することをお勧めします。

Jake のライブラリを使用する場合は、Activity テーマを @style/Theme.Sherlock.ForceOverflow として設定して、古いデバイスでオーバーフロー メニューを強制することを検討してください。

Edit2:テーマを使用すると、ハードウェア メニュー ボタンを備えたデバイスでForceOverflow問題が発生します (例 #1 )。したがって、Jake Wharton はForceOverflow将来のバージョンで削除される予定です。

于 2012-01-27T22:23:00.290 に答える
12

さて、これは単純ですが、理解するのは難しいです。

まず、オーバーフローインフレータとして使用するメニュー項目が必要です。例

<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!オーバーフローメニューがあります!私があなたを助けてくれたことを願っています。:)

于 2013-02-13T19:07:11.943 に答える