使用HoloEveryWhere库将菜单项添加到ActionBar中时出现问题

时间:2014-01-14 05:47:12

标签: android android-holo-everywhere android-actionbar-compat

我正在关注教程https://developer.android.com/training/basics/actionbar/adding-buttons.html

它说的是:

  

如果您的应用使用支持库来兼容版本   与Android 2.1一样低,showAsAction属性不可用   来自android:名称空间。相反,此属性由。提供   支持库,您必须定义自己的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. Manifest具有:

<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

感谢。

2 个答案:

答案 0 :(得分:0)

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

就像您引用Google Play服务的方式一样,您需要以相同的方式引用appcompat。

http://developer.android.com/tools/support-library/setup.html

答案 1 :(得分:0)

首先不需要使用自定义命名空间。简单地使用android命名空间android:showAsAction="always"工作正常,使用模拟器API级别8和2.3x设备以及4.4设备进行测试。