【问题标题】:What is the difference b/w app:theme & android:theme in Android Programmingapp:theme android:theme 在 Android 编程中有什么区别
【发布时间】:2019-12-08 07:34:04
【问题描述】:

我看过一些人写的这个

app:theme="@style/xyz"

& 另一方面,有些人写

android:theme="@style/xyz"

这两个代码有什么区别?

【问题讨论】:

    标签: android android-studio checkbox themes


    【解决方案1】:

    appandroid 实际上是命名空间。您可以将它们视为与 java 中的 packages 相同的方式。 android 命名空间包含来自默认视图的属性,而 app 指的是来自应用程序命名空间的属性,例如来自自定义视图。

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

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

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

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

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

    【讨论】:

    • 感谢 Zohaib,您很有帮助。你说得对:)
    • @JustinJoseph 没问题,请将答案标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2011-10-07
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2011-06-10
    相关资源
    最近更新 更多