gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:27 25 4
gpt4 key购买 nike

下面是在一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com