不使用appcompat库时应该使用android:showAsAction

use*_*278 16 eclipse android android-appcompat android-actionbar

我有一个奇怪的问题,我在我的Android应用程序中使用menu.xml文件,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:compat="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_refresh"
        android:orderInCategory="100"
        android:title="@string/action_refresh"
        android:icon="@drawable/toc"
        compat:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是几天前我正在将我的eclipse更新到最后一个版本,之后,app:showAsAction ="always"显示错误:

不使用appcompat库时应该使用android:showAsAction,之后我的操作栏图标被移动到溢出栏而根本没有显示在操作栏中.

无论如何,appcompat库是我的基本样式的父级.我该怎么做才能解决这个问题?

Adv*_*t S 18

你需要做三件事 -

  1. 将这3件事添加xmlns:tools="schemas.android.com/tools" tools:context="com.example.sample.YourActivity" xmlns:yourapp="http://schemas.android.com/apk/res-auto"到您的<menu>代码中

    和通常一样 xmlns:android="http://schemas.android.com/apk/res/android"

  2. 加入yourapp:showAsAction="ifRoom"你的<item>.

  3. 最后,通过Project - > Clean清理项目......

最后一步是为我解决了这个问题.简单地清理项目(有时它们会变脏)

这是最终代码的样子:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="schemas.android.com/tools"
tools:context="com.example.sample.YourActivity"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/action_share"
    android:orderInCategory="100"
    android:title="Share"
    android:icon="@drawable/ic_share_white"
    yourapp:showAsAction="ifRoom" />

</menu>
Run Code Online (Sandbox Code Playgroud)


Moh*_*Ali 14

这适用于我,我使用appcompatlibrary:

compat:showAsAction="always"
Run Code Online (Sandbox Code Playgroud)

代替:

app:showAsAction="always"
Run Code Online (Sandbox Code Playgroud)

并使用compat:showAsAction ="always",在menu.xml里面包含以下行:

<menu   
   ......
  <!-- include the below line -->
    xmlns:compat="http://schemas.android.com/apk/res-auto" >
Run Code Online (Sandbox Code Playgroud)


小智 5

面临同样的问题.这两个选项对我有用:

1.包括 - xmlns:compat ="http://schemas.android.com/apk/res-auto">然后使用:"compat:showAsAction ="ifRoom"/>"

2.不包括compat,只需使用:app:showAsAction ="ifRoom"/>

PS:使用Android Studio.