Android 什么时候需要安卓前缀?

Android 什么时候需要安卓前缀?,android,Android,我知道在Android中,我在res/目录中放置的任何内容都将被编译到相应的R类中: res/drawable -> R.drawable res/layout -> R.layout 等等 我知道我也可以使用android软件包中的项目: android.R.id.text1 如果我想使用xml格式的资源,我可以执行以下操作: <TextView ... android:text="@string/my_text" /> <TextVie

我知道在Android中,我在res/目录中放置的任何内容都将被编译到相应的R类中:

res/drawable -> R.drawable
res/layout   -> R.layout
等等

我知道我也可以使用android软件包中的项目:

android.R.id.text1
如果我想使用xml格式的资源,我可以执行以下操作:

<TextView
    ...
    android:text="@string/my_text" />
<TextView
    ...
    android:id="@android:id/text1" />

如果我想使用android软件包中的某些东西,我可以执行以下操作:

<TextView
    ...
    android:text="@string/my_text" />
<TextView
    ...
    android:id="@android:id/text1" />

这种情况似乎并不总是如此,我无法找出区别。 使用AppCompat主题时:

<TextView
    android:theme="@style/Theme.AppCompat.Light"
    android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />

而不是

<TextView
    android:theme="@android:style/Theme.AppCompat.Light"
    android:textAppearance="@android:style/TextAppearance.AppCompat.Subhead" />


Theme.AppCompat.Light和TextAppAppAppCompat.Subhead未在我的res/目录中的任何位置定义。它们是support.v7.appcompat支持库的一部分。在这种情况下,为什么我不需要使用android前缀?

因为它们是应用程序的一部分,而不是框架的一部分。不是你不需要它;如果您尝试它,您将得到一个编译错误


appcompat-v7
恰好是一个库这一事实无关紧要。这与您自己输入代码没有什么不同。应用程序中的任何内容都不使用
android
前缀。作为框架一部分的资源-因此在设备上,而不是在你的应用程序中-获得
android
前缀。

,因为它们是你的应用程序的一部分,而不是框架的一部分。不是你不需要它;如果您尝试它,您将得到一个编译错误


appcompat-v7
恰好是一个库这一事实无关紧要。这与您自己输入代码没有什么不同。应用程序中的任何内容都不使用
android
前缀。作为框架一部分的资源-因此在设备上,而不是在应用程序中-获取
android
前缀。

因此支持库中没有任何内容使用前缀。只有属于目标sdk的东西?@Dismissile:我会将其表述为“支持库中定义的任何东西都不使用前缀”。正如您的代码可以使用框架资源一样,支持库也可以使用框架资源,因此支持库中没有任何东西使用前缀。只有属于目标sdk的东西?@Dismissile:我会将其表述为“支持库中定义的任何东西都不使用前缀”。正如您的代码可以使用框架资源一样,支持库也是如此。