我看到有人写这个
app:theme="@style/xyz"
另一方面,有些人写
android:theme="@style/xyz"
这2个代码有什么区别?
app
and android
实际上是命名空间。你可以用同样的方式来思考它们packages
在Java中。android
命名空间包含来自默认视图的属性,其中app
指来自应用程序命名空间的属性,例如来自自定义视图的属性。
所以当你写的时候android:theme
,它将使用主题属性,该属性是默认视图的一部分,例如 TextView(它是 Android 的一部分)。现在当你使用app:theme
这意味着您正在谈论自定义主题属性而不是默认主题属性。
当您正在构建扩展另一个视图的 CustomView 并且您还想更改theme
属性分配值,例如,您可能想要构建一个自定义视图以向 TextView 添加阴影,并且希望在主题中提供阴影颜色。
AppCompat 库使用的视图app:theme
制作自己的版本android:theme
以支持旧版本。
TLDR; Using android:theme
使用 View 的默认主题功能,而app:theme
用于自定义视图中的自定义主题功能。如果您使用的是 AppCompatView 或自定义视图,请使用app:theme
当可用时,否则android:theme
.
如果我使用会发生什么android:theme
代替app:theme
在 MaterialDesign/AppCompat 或任何其他自定义视图中?
如果您这样做,所有视图中可用的视图属性都将是可自定义的,但自定义视图添加的任何新属性将无法通过主题进行自定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)