所有Android设备都具有一致的UI颜色

use*_*481 4 android

我注意到UI颜色(例如按钮背景/文本颜色)根据设备中使用的当前主题,从设备到设备的所有更改.

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

谢谢.

ada*_*amp 5

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

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

主题是一种元风格.它可以通过AndroidManifest.xml应用于Activity甚至整个应用程序.除此之外,它还定义了小部件和值的默认样式,这些样式控制UI外观的其他部分.

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

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

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