Che*_*wda 8 xml android namespaces shareactionprovider
下面是活动中显示的菜单代码(Sunshine udacity android course的DetailFragment.xml)
我无法理解为什么下面需要两个不同的命名空间.为什么我不能使用命名空间android:而不是app:
在下面的xml部分,当我用app:actionProviderClass ="android.widget.ShareActionProvider"替换app:actionProviderClass ="android.support.v7.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>
Run Code Online (Sandbox Code Playgroud)
Ken*_* S. 13
ShareActionProvider有两个版本,android框架和v7支持库.
在Sunshine中你需要支持min SDK版本10,而ShareActionProvider从API级别14添加到框架中,那么如何为SDK 10-13提供该功能呢?您可以使用支持库版本.
您可以在此处导入build.gradle中的支持库
dependencies {
...
compile 'com.android.support:appcompat-v7:21.0.2'
}
Run Code Online (Sandbox Code Playgroud)
现在回到关于app命名空间的问题.Sunshine使用它们支持的较低SDK (frameProviderClass和showAsAction)框架中没有的属性,因此他们需要使用支持库提供的自定义属性,并使用您需要的自定义属性来使用应用程序命名空间.该机器人命名为框架的属性的名称建议.
<?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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6172 次 |
| 最近记录: |