我知道在Android中,我放在res /目录中的任何东西都会被编译到适当的R类中:
res/drawable -> R.drawable
res/layout -> R.layout
等
我知道我也可以使用android包中的项目:
android.R.id.text1
如果我想在xml中使用我的资源,我可以执行以下操作:
<TextView
...
android:text="@string/my_text" />
如果我想在android包中使用某些内容,我可以执行以下操作:
<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" />
我的res /目录中的任何位置都没有定义Theme.AppCompat.Light和TextAppearance.AppCompat.Subhead。它们作为support.v7.appcompat支持库的一部分包含在内。为什么我不需要在这种情况下使用android前缀?
答案 0 :(得分:2)
因为它们是您应用的一部分,而不是框架的一部分。并不是你不需要它;如果您尝试它,您将收到编译错误。
appcompat-v7
恰好是一个图书馆的事实并不重要。这与您自己输入代码没有什么不同。您应用中的任何内容都不会使用android
前缀。作为框架一部分的资源 - 因此在设备上,而不是在您的应用程序中 - 获得android
前缀。