我不明白为什么错误和不兼容(AndroidStudio告诉我“应将app:showAsAction与appcompat库一起使用)代码

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/action_search"
      android:title="@string/action_search"
      android:icon="@drawable/search"
      android:showAsAction="always" />
</menu>

工作完美,但适当且兼容的版本,例如
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_search"
          android:title="@string/action_search"
          android:icon="@drawable/search"
          app:showAsAction="always" />
</menu>

完全不显示我的图标。

我正在Samsung GT P5210(android v.4.4.2)和Nexus 7(4.4.4)上进行测试

最佳答案

当您要使用操作栏时,应始终检查的内容是

1)扩展ActionBarActivity而不是Activitypublic class MainMenu extends ActionBarActivity{
2)选择 list 中定义的右侧样式

list

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

样式
    <style name="AppTheme"
    parent="Theme.AppCompat.Light.DarkActionBar">
    </style>

3)选择右侧标题作为showAsAction
  <menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:**yourapp**="http://schemas.android.com/apk/res-auto" >
  <item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      **yourapp**:showAsAction="ifRoom"  />
    ...
  </menu>

这就是大多数人会犯的错误

4)在Menu中定义您的Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

如果执行以下所有操作,则您的操作栏应该可以工作。

然后,您应该为每个位置添加onClickListener ...

07-27 15:37