6

ABS を使用してアプリのスタイルを ICS のルック アンド フィールに変更しようとしています。ActionBar 自体を取得するのは簡単でよかったのですが、メニュー項目を追加するのは簡単ではありませんでした。

私のコードは次のようになります:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

すべての適切なインポートが使用されています。

私のmenu.xmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/backup" android:title="@string/backupLabel"/>
  <item android:id="@+id/restore" android:title="@string/restoreLabel"/>
</menu>

ActionBar が表示されますが、メニューは 2.1 メニューとして動作します。メニュー ボタンからのみ起動し、オーバーフローは利用できません。これは、メニュー ボタンを使用してメニューをアクティブにする必要がある ICS エミュレーターにも当てはまります。

android:showAsAction="ifRoom" を追加すると、アイテムはアクションアイテムとして表示されますが、オーバーフローには表示されません。これは、常に存在させたい場所です。

それはすべて意味がありますか?

私は何が欠けていますか?

4

3 に答える 3

4

ActionBarにあるこのコードボートメニューを使用してください:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/backup"
        android:showAsAction="ifRoom"
        android:title="backupLabel"/>
    <item
        android:id="@+id/restore"
        android:showAsAction="ifRoom"
        android:title="restoreLabel"/>
</menu> 

そのように見える:

ここに画像の説明を入力

あなたが使用している場合

android:showAsAction="ifRoom" : Only place this item in the Action Bar if there is room for it.

android:showAsAction="Never" : Never place this item in the Action Bar.

次のように使用する場合:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

        <item
            android:id="@+id/backup"
            android:showAsAction="ifRoom"
            android:title="backupLabel"/>
        <item
            android:id="@+id/restore"
            android:title="restoreLabel"/>
    </menu> 

その外観: 1 つは ActionBar にあり、メニュー ボタンを押すと 2 番目が開きます。

ここに画像の説明を入力

注: 3.0 未満の Android OS では正常に動作するので、心配する必要はありません。ただし、複数のメニュー項目 (3 つ以上) がandroid:showAsAction="ifRoom"ある場合は、デバイスの画面サイズに依存していることがわかります。

プロトレイト:

ここに画像の説明を入力

横向き:

ここに画像の説明を入力


上記のすべてを行った後、3.0未満のAndroid OSで以下の方法を使用することをお勧めします。

ここに画像の説明を入力

コード:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/file"
        android:showAsAction="ifRoom"
        android:title="file">

        <!-- "file" submenu -->
        <menu>
            <item
                android:id="@+id/create_new"
                android:title="create_new"/>
            <item
                android:id="@+id/open"
                android:title="open"/>
        </menu>
    </item>

</menu>
于 2013-04-05T11:06:36.177 に答える
0

ソフトウェアではなく、ハードウェア キーボードが有効になっているエミュレータを使用している可能性があります。オーバーフロー メニューでアクションを表示するには、sofwater コントロールを備えたエミュレーターを使用します。スクリーンショットは、それを行う 2 つの方法を示しています。

  • 既存の AVD を編集する

既存の AVD を編集する.

  • 既存のデバイス プロファイルを複製する

既存のデバイス プロファイルを複製する.

于 2013-04-05T10:07:26.617 に答える