ActionBar上的溢出操作未显示

chu*_*ubs 6 android actionbarsherlock android-actionbar

我有一个使用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>
Run Code Online (Sandbox Code Playgroud)

以下是设置它的代码:

@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;
}
Run Code Online (Sandbox Code Playgroud)

我已经查看了ActionBar Sherlock中的演示,但我不知道他们做什么不同以获得溢出而不是我正在做的事情.那么这里发生了什么,为什么它没有显示?

t0m*_*13b 23

如果您有物理菜单键,则不会显示溢出指示符.这是一种设计行为.有关另一个问题的详细信息,请参见此处.

  • 这个答案的另一面是将这个属性添加到你的活动中:android:theme ="@ style/Theme.Sherlock.ForceOverflow"它会将动作放在ActionBar中,不适合溢出图标来访问它作为下拉.总体而言,我认为这个关于将垃圾放入菜单按钮的设计决定是愚蠢的,因为谷歌正试图将人们转移到ActionBar,因为从他们自己的录取和研究中没有人知道菜单按钮.那么为什么默认会有溢出?!"哦,我明白了.让我们把它放在没人去的地方." 不是谷歌所做的一切都不是很棒. (4认同)