6

部屋よりも多くのアクションがあるため、オーバーフローを表示する必要がある ActionBar Sherlock を使用する ActionBar があります。ただし、オーバーフロー アイコンは表示されません。これが私の構成です:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
      android:icon="@drawable/action_search"
      android:title="@string/menu_search"
      android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_library"
      android:icon="@drawable/hardware_headphones"
      android:title="@string/my_music"
      android:showAsAction="ifRoom|withText"/>
<item android:id="@+id/menu_downloads"
      android:icon="@drawable/av_download"
      android:title="@string/downloads"
      android:showAsAction="ifRoom|withText"/>
</menu>

そして、これを設定するコードは次のとおりです。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getSupportMenuInflater();
    menuInflater.inflate(R.menu.shopping_menu, menu);
    MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
    searchMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity(new Intent(ShopActivity.this, SearchDialog.class));
            return false;
        }
    });
    MenuItem downloadMenuItem = menu.findItem(R.id.menu_downloads);
    downloadMenuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity( new Intent(ShopActivity.this, DownloadQueueActivity.class) );
            return false;
        }
    });
    MenuItem myMusicItem = menu.findItem(R.id.menu_library);
    myMusicItem.setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            startActivity(new Intent(ShopActivity.this, MyMusicActivity.class));
            return false;
        }
    });

    return true;
}

私は ActionBar Sherlock のデモを見てきましたが、オーバーフローを取得するために私がしていることと何が違うのかわかりません。では、ここで何が起こっているのか、なぜ表示されないのでしょうか?

4

3 に答える 3

23

物理的なメニュー キーがある場合、オーバーフロー インジケーターは表示されません。これは仕様による動作です。別の質問の詳細については、こちらを参照してください。

于 2012-07-14T14:37:54.600 に答える
1

うーん、ここには2つの問題があると思います。まず、t0mm13b が述べているように、デバイスに物理的なメニュー キーがある場合、オーバーフロー インジケーターは表示されません。これは仕様によるものです。私の経験では、すべてのデバイスに当てはまるわけではありませんが (残念ながら...)

2 つ目の問題は、アイテムを強制的にオーバーフローさせたい場合は、showAsAction を「never」に設定する必要があることです。それ以外の場合、オーバーフローに表示される要素は、単にアクション バーに「収まらない」要素だけです。そして、テキストで表示したいアイテムが 3 つあるとすると、オーバーフロー アイテムが少なくとも 1 つあることがほとんど保証されているため、オーバーフロー アイコンが表示されます (最初の段落の注意事項があります)。

于 2012-07-14T06:06:02.030 に答える