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

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

   

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

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

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

你需要做三件事 –

  1. 添加以下3件事xmlns:tools="schemas.android.com/tools" tools:context="com.example.sample.YourActivity" xmlns:yourapp="http://schemas.android.com/apk/res-auto"到你的

    标签

    以及通常的xmlns:android="http://schemas.android.com/apk/res/android"

  2. yourapp:showAsAction="ifRoom"

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

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

这是最终代码的样子:

    

这适用于我,我使用appcompatlibrary:

 compat:showAsAction="always" 

代替:

 app:showAsAction="always" 

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

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

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

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

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

PS:使用Android Studio。

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

问题:确保菜单项使用正确的名称空间Id:AppCompatResource

使用appcompat库时,菜单资源应该引用app:namespace中的showAsAction,而不是android:namespace。

同样,当不使用appcompat库时,您应该使用android:showAsAction属性。

    

您需要做的就是将以下行添加到item元素以禁止显示警告。 将命名空间作为compat vs app for "http://schemas.android.com/apk/res-auto"实际上并没有做任何特别的事情。

tools:ignore="AppCompatResource"

完整代码:

    

注意: compat标签可以是app或任何你想要的。