0
<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>
4

2 回答 2

2

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

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

当你说windowBackground时,它会引用那个命名空间,所以它知道它在看什么。

这里有一个相关的先前答案:XML 中的“xmlns”是什么意思?

于 2012-09-10T02:08:14.690 回答
0

我认为您正在使用一些支持库在预HoneyComb 设备(即ActionBarSherlock)中提供ActionBar

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

如果您在 IDE 的帮助下检查这两行(即在 Eclipse 中通过 ctrl + 单击),

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

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

一旦理解了这个概念,这个概念就很简单了。ActionBarSherlock 在对 ActionBar 的原生支持不可用的设备中提供自己的配置(通过使用这些变量)。然而,它只是绕过 Android API 提供的任何操作栏。

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

于 2012-09-13T10:37:35.707 回答