我正在使用新的操作栏支持,我的所有操作 View 都显示为溢出而不是栏中的图标。我的应用适用于 7+ API。
家庭 Activity :
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 上进行部署。我还在 list 上添加了 android:theme="@style/Theme.AppCompat.Light.DarkActionBar"并且我的项目正确引用了官方文档中描述的 android-support-v7-appcompat。
最佳答案
您必须定义您的 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>
注意 请记住,SearchView 类已更改。它现在使用支持库中的那个,因此您还必须更新 onCreateOptionsMenu() 中的代码
编辑: here是一个关于如何从 ActionBarSherlok 迁移到 AppCompat 的非常好的教程
关于android - 操作栏不显示操作 View 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18099221/