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

嗯,我认为这里有两个问题。首先,如 t0mm13b 所述,如果设备具有物理菜单键,则不会显示溢出指示器。这是设计使然。虽然根据我的经验,它并不适用于所有设备(不幸的是......)

第二个问题是,如果要强制某个项目溢出,则需要将 showAsAction 设置为“从不”。否则,溢出中出现的唯一元素是那些在操作栏中“不适合”的元素。鉴于您有 3 个项目要与文本一起显示.. 您几乎可以保证至少有一个溢出项目,因此溢出图标(带有第一段的警告)

于 2012-07-14T06:06:02.030 回答
0

尝试根据文件中的Android指南将android:showAsAction标签更改为,如下所示app:showAsActionmenu_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>
于 2016-05-23T07:18:53.247 回答