何时需要安装android前缀?

时间:2016-03-02 22:09:48

标签: android

我知道在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前缀?

1 个答案:

答案 0 :(得分:2)

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

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