我正在使用新的操作栏支持,我的所有操作视图都显示在溢出中,而不是作为栏中的图标显示。我的应用适用于7+ API。
HomeActivity:
public class HomeActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(R.string.app_name);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
}
home.xml
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_browse"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/title_activity_browse"/>
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
android:title="@string/text_search"/>
<item
android:id="@+id/action_scan"
android:icon="@drawable/action_scan"
android:showAsAction="always"
android:title="@string/title_activity_browse"/>
我在4.3上使用Nexus 7,在2.3.3上使用LGP500,没有图标。我还在清单上添加了android:theme =“@ style / Theme.AppCompat.Light.DarkActionBar”,我的项目正式引用了官方文档中描述的android-support-v7-appcompat。
答案 0 :(得分:82)
您必须定义menu
资源文件以及支持库的属性。
要实现后端支持,它会读取它们而不是旧版Android中定义的那些。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
yourapp:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_browse"
android:orderInCategory="100"
android:showAsAction="never"
yourapp:showAsAction="never"
android:title="@string/title_activity_browse"/>
<item
android:id="@+id/action_search"
android:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="ifRoom|collapseActionView"
yourapp:showAsAction="ifRoom|collapseActionView"
yourapp:actionViewClass="android.support.v7.widget.SearchView"
android:title="@string/text_search"/>
<item
android:id="@+id/action_scan"
android:icon="@drawable/action_scan"
android:showAsAction="always"
yourapp:showAsAction="always"
android:title="@string/title_activity_browse"/>
</menu>
<强> NB 强> 请记住 SearchView类已更改。它现在使用了支持库中的一个,因此您还必须更新onCreateOptionsMenu()中的代码
修改强> here是关于如何从ActionBarSherlok迁移到AppCompat的非常好的教程
答案 1 :(得分:-1)
常见的错误是忘记在string.xml文件中包含标题字符串。确保为每个菜单项包含它。
假设我们的菜单xml包含以下项目:
<item
android:id="@+id/toggle_action"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:title="@string/toggle_action"/>
如果我们忘记包含字符串toggle_action的值,则不会显示操作栏图标。
转到strings.xml文件并添加以下内容:
<string name="toggle_action">TOGGLE</string>