繁体   English   中英

所有 Android 设备中的 UI 颜色一致

[英]Consistent UI color in all Android devices

我注意到 UI 颜色(例如按钮背景/文本颜色)会根据设备中使用的当前主题在设备之间发生变化。

为 Android 应用程序应用自定义 UI colors 的最佳实践是什么,以便我在所有 Android 设备中的应用程序具有相同的配色方案。 我可以在 UI 项上设置文本/背景颜色。 我想知道是否有一个地方可以定义所有 colors 将覆盖手机上应用的当前主题。

谢谢。

是的,您可以在一个地方为您的应用定义这些值。 有关其工作原理,请参阅 Android 文档中的Styles 和主题

样式只是值到预定义名称的映射。 如果您发现自己在布局中重复了许多常见属性,则可以将其分解为样式。 例如,您可能有一个特殊的按钮样式,它定义了特定的背景和文本颜色。

主题是一种元风格。 它可以通过您的 AndroidManifest.xml 应用于一个 Activity 甚至整个应用程序。 除其他外,它定义了默认的 styles 用于控制 UI 外观和感觉其他部分的小部件和值。

当您尝试在应用程序的其他自定义 UI 中与系统融合时,您可以查询当前主题的值。 就像在引用系统资源时使用@引用语法@android:drawable/foo一样,当您想使用存储在系统主题属性foo中的值时,可以使用语法?android:attr/foo foo 。

在您的情况下,如果您想更改整个应用程序的主要文本颜色,请应用设置属性textColorPrimary的自定义主题。 如果您只是想确保您的应用程序的元素使用由您的应用程序运行的设备定义的主要文本颜色,您可以设置android:textColor="?android:attr/textColorPrimary" 同样的原则也适用于其他地方。

如果您想查看系统中使用了哪些属性,它们在此文件中定义为 Android 框架的一部分: frameworks/base/core/res/res/values/attrs.xml 查看顶部的 XML 元素<declare-styleable name="Theme">的子元素。 要查看系统将这些设置为的示例,请参阅同一目录中的theme.xml 最后,并非所有这些属性都是公共的——非公共属性不能由应用程序设置,它们是 Android 框架的实现细节。 有关可在应用程序中使用的属性的完整列表,请参阅public.xml

最佳实践是将自定义主题应用于您的应用程序,并根据需要覆盖尽可能多的默认属性。

几乎所有东西都可以改变,除了

  • Menu
  • AlertDialog的一些属性(可以使用自定义对话框更改这些属性)
  • 操作系统提供的视图,例如快速搜索栏 (QSB)

如果您喜欢默认 SDK 资源的外观,那么您可以在sdk_folder/platforms/android-9/data/res/中找到这些(将9替换为您想要的资源的 SDK 版本) - 将您想要的资源复制到您的应用程序中并参考那些。

您可以查看 SDK 使用的主题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM