在动作条溢出操作不显示(Overflow Actions on ActionBar not show

2019-07-30 10:06发布

我使用的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;
}

我看过了在动作条福尔摩斯的演示,但我不能告诉他们做什么不同,以获得比溢出我在做什么。 因此,这里发生了什么,为什么它没有显示?

Answer 1:

如果你有一个物理菜单键,溢出指示器不显示。 这是由设计行为。 见这里关于问另一个问题的更多细节。



Answer 2:

嗯,我觉得这里有两个问题。 首先,作为t0mm13b状态,如果该设备具有物理菜单键,溢出指示器不显示。 这是由设计。 虽然在我的经验,它并不适用于所有设备(不幸的是...)

第二个问题是,如果你想一个项目强制溢出,需要将showAsAction设置为“从不”。 否则,出现在溢出的唯一的元素是简单地操作栏中的“不适合”。 而鉴于你有你想要的文字显示3项..你几乎存在保证至少有一个溢出项,因此溢出图标(第一款的警告)



Answer 3:

通过改变尝试android:showAsAction标签app:showAsAction根据在Android的导向menu_main.xml文件,如下所示

加入此行,如果不存在

menu xmlns:app="http://schemas.android.com/apk/res-auto"

    <item android:id="@+id/action_search"
        android:icon="@drawable/search_icon"
        android:title="@string/action_search"
        app:showAsAction="always"/> <!--change here android: to app:-->

    <item android:id="@+id/action_location"
        android:icon="@drawable/location_icon"
        android:title="@string/action_locate"
        app:showAsAction="always"/>
</menu>


文章来源: Overflow Actions on ActionBar not showing