我正在学习教程https://developer.android.com/training/basics/actionbar/adding-buttons.html
上面写着:
如果您的应用程序正在使用支持库进行版本兼容性低至Android 2.1,showAsAction属性不可用来自android:命名空间。相反,此属性由Support Library,您必须定义自己的XML命名空间并使用该名称空间作为属性前缀。(自定义XML命名空间应该基于你的应用程序名称,但它可以是你想要的任何名称,并且只能可在您声明它的文件的范围内访问。)
所以我定义了以下main_activity_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<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:icon="@drawable/ic_launcher"
android:title="temp"
app:showAsAction="always"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_launcher"
android:title="temp"
app:showAsAction="always"/>
</menu>
我得到以下错误:
No resource identifier found for attribute 'showAsAction'
我在我的项目中使用HoloEveryWhere
库。项目建设目标是19。清单有:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
如何让自定义命名空间工作有什么建议吗?
将引用添加到android-support-v7-appcompat
库中会产生大量已定义的错误:
error: Attribute "actionBarDivider" has already been defined abc_attrs.xml /Myapp/HoloEverywhere-master/library/res/values line 71 Android AAPT Problem
谢谢。
I tried copying android-support-v7-appcompat.jar under libs folder, but it didn't help
您需要在android项目中引用AppCompat,而不是将其作为jar添加到libs文件夹中。
http://developer.android.com/guide/topics/ui/actionbar.html
就像你引用谷歌播放服务一样,你需要以同样的方式引用appcompat。
http://developer.android.com/tools/support-library/setup.html
首先不需要使用自定义命名空间。简单地使用android
名称空间android:showAsAction="always"
工作良好,使用模拟器API级别8和2.3x设备以及4.4设备进行测试。