android - android xml中app命名空间的用途是什么

标签 android xml namespaces shareactionprovider

下面是在一个activity中显示菜单的代码(Sunshine udacity android类(class)的DetailFragment.xml)

我不明白为什么下面需要两个不同的命名空间。为什么我不能使用命名空间 android: 而不是 app:

当我替换时在下面的 xml 部分 应用:actionProviderClass="android.support.v7.widget.ShareActionProvider" 和 app:actionProviderClass="android.widget.ShareActionProvider"

它似乎给出了一些分配错误,但如果将应用程序更改为 android,则工作正常,如下所示 android:actionProviderClass="android.widget.ShareActionProvider"

我无法理解这里到底发生了什么。

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_share"
        android:title="@string/action_share"
        app:showAsAction="always"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
</menu>

最佳答案

ShareActionProvider 有两个版本,the android framework'sv7 support library's .

Sunshine需要支持最低SDK版本10,而ShareActionProvider是从API level 14开始添加到框架中的,那么如何为SDK 10-13提供功能呢?您使用 the support library版本代替。

你在这里导入build.gradle中的支持库

dependencies {
    ...
    compile 'com.android.support:appcompat-v7:21.0.2'
}

现在回到您关于应用命名空间的问题。 Sunshine 在他们支持的低端 SDK 上使用框架中没有的属性(actionProviderClass 和 showAsAction),因此他们需要使用支持库提供的自定义属性,并使用 strong>自定义属性您需要使用应用命名空间android 命名空间 用于框架属性,如建议的名称。

<?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_share"
        android:title="@string/action_share"
        app:showAsAction="always"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
</menu>

关于android - android xml中app命名空间的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044383/

相关文章:

android - AudioRecord.read() 方法在 Android 4.3+ 上无限期阻塞

android - 使用nexus 4 点leftEye 和rightEye 坐标返回null。Nexus 4 不支持吗?

iphone - 在 iPhone 应用程序中显示来自 RSS 源的内容

android - 如何将工具栏放在应用程序的底部?

sql-server - 使用带有子命名空间的 SQL Server 生成 xml

python - python 如何知道 __name__ 应该是什么?

c# - 为什么我收到错误 CS0246 : The type or namespace name could not be found?

android - android studio中的HAXM配置

android - 和引擎一起 toast 提问?

java - OpenNLP : documentBuilderFactory. setFeature ("http://javax.xml.XMLConstants/feature/secure-processing",真)ParserConfigurationException