b/w app:theme 和 android:theme 在 Android 编程中的区别是什么



我已经看到有些人写

app:theme="@style/xyz"

&另一方面有些写

android:theme="@style/xyz"

b/w这两个代码有什么区别?

appandroid实际上是名称空间。您可以以与Java中的packages相同的方式想到它们。 android名称空间包含默认视图中的属性,其中app涉及您应用程序名称空间中的属性,例如从自定义视图中。

因此,当您编写android:theme时,它将使用extview(例如Android的一部分(等默认视图的一部分的主题属性。现在,当您使用app:theme时,这意味着您正在谈论自定义主题属性,而不是默认属性。当您构建一个扩展另一个视图的自定义视图时,这可能很有用,并且您还想更改theme属性分配值的方式,例如,您可能要构建一个自定义视图以在文本视图中添加阴影,并且您希望主题中提供的阴影颜色。

AppCompat库的视图使用app:theme制作自己的android:theme版本来支持旧版本。

tldr; 使用android:theme使用视图的默认主题函数,而app:theme则用于自定义视图中的自定义主题函数。如果您使用的是AppCompatView或自定义视图,请在可用时使用app:theme,否则android:theme

如果我在MaterialDesign/AppCompat或任何其他自定义视图中使用android:theme而不是app:theme,会发生什么?

如果这样做,则可以自定义的所有视图中可用的视图的属性,但是自定义视图中添加的任何新属性都无法通过主题自定义。

最新更新