android XML Attributes有什么区别

时间:2012-09-10 01:58:38

标签: android xml

<item name="android:actionBarStyle"> @ style / ActionBar.Home </ item>
<item name="actionBarStyle"> @ style / ActionBar.Home </ item>

我的问题:前缀“android:”没有前缀“android:”有什么区别?

<style name="Theme.Iosched" parent="Theme.Base">
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item>
    <item name="windowContentOverlay">@drawable/actionbar_shadow</item>
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="actionBarStyle">@style/ActionBar</item>
    <item name="android:actionBarTabStyle">@style/ActionBar.TabView</item>
    <item name="actionBarTabStyle">@style/ActionBar.TabView</item>
    <item name="android:actionBarTabBarStyle">@style/ActionBar.TabBar</item>
    <item name="actionBarTabBarStyle">@style/ActionBar.TabBar</item>
    <item name="android:actionBarTabTextStyle">@style/ActionBar.TabText</item>
    <item name="actionBarTabTextStyle">@style/ActionBar.TabText</item>
</style>

2 个答案:

答案 0 :(得分:2)

如果你查看.xml文件的顶部,它应该说:

xmlns:android="http://schemas.android.com/apk/res/android"

当你说windowBackground时,它会引用该命名空间,因此它知道它在看什么。

这里有一个相关的先前答案:What does "xmlns" in XML mean?

答案 1 :(得分:0)

我认为您正在使用一些支持库在pre-HoneyComb设备中提供 ActionBars ,即ActionBarSherlock。

如果是这样,那么当他们说backgroundColor然后他们引用他们自己的变量,如果他们用 android 作为前缀:他们就试图访问系统值。由于这些值(常量)可能在您要添加ActionBar的设备中不可用。

如果你在IDE的帮助下检查这两行(即在eclipse中通过ctrl + click),

<item name="android:actionBarStyle"> @ style / ActionBar.Home </ item>
<item name="actionBarStyle"> @ style / ActionBar.Home </ item>

@ style / ActionBar.Home的值可能指向两个不同的位置。  实际上,这些图书馆有时会因为假设用户永远不需要修改它而使事情变得更糟。

一旦理解,这个概念就很简单了。 ActionBarSherlock在没有ActionBar本机支持的设备中提供自己的配置(通过使用这些变量)。但是它只是绕过Android API中可用的操作栏。

虽然我必须承认阅读和理解ActionBarSherlock有时是A $$$的真正痛苦。