我有一个使用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中的演示,但我不知道他们做什么不同以获得溢出而不是我正在做的事情。那么为什么它没有显示呢?
答案 0 :(得分:23)
如果您有物理菜单键,则不会显示溢出指示符。这是一种设计行为。有关其他问题的详细信息,请参阅here。
答案 1 :(得分:1)
嗯,我认为这里有两个问题。首先,如t0mm13b所述,如果设备具有物理菜单键,则溢出指示器不显示。这是设计的。虽然根据我的经验,它不适用于每个设备(不幸的是......)
第二个问题是,如果要强制项目溢出,则需要将showAsAction设置为“never”。否则,溢出中出现的唯一元素就是在操作栏中“不适合”的元素。并且鉴于您有3个项目要显示文本..您几乎可以保证至少有一个溢出项目,因此溢出图标(带有第一段的警告)
答案 2 :(得分:0)
请尝试根据android:showAsAction
文件中的Android指南将app:showAsAction
标记更改为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>