【问题标题】:android: How can I define custom colors, drawables, etc. in themes?android:如何在主题中定义自定义颜色、可绘制对象等?
【发布时间】:2013-01-15 06:28:38
【问题描述】:

我希望我能解释我所追求的。本质上,我的用户要求我在我的应用程序中允许不同的外观,我希望我可以使用主题来做到这一点。

我希望我能做这样的事情:

<style name="NewTheme" parent="android:Theme.Dark">
  <item name="labelColor">#f90</item>
  <item name="buttonColor">#fff</item>
  <item name="buttonBg">@drawable/button</item>
</style>
<style name="OldTheme" parent="android:Theme.Dark">
  <item name="labelColor">#fa0</item>
  <item name="buttonColor">#88f</item>
  <item name="buttonBg">@drawable/button_old</item>
</style>

然后在我的styles.xml中引用这些值:

<style name="labelStyle">
  <item name="android:textColor>@labelColor</item>
</style>
<style name="buttonStyle">
  <item name="android:textcolor">@buttonColor</item>
  <item name="android:background">@buttonBg</item>
</style>

我知道这个语法是错误的,但什么是正确的语法?基本上,我想创建一组属性(颜色、背景、其他一些东西)并根据主题选择它们。

【问题讨论】:

  • 为什么不创建一个colors.xml,将你所有的颜色集添加到它并定义你的个人风格,参考你的XML颜色?这一直对我有用。
  • 感谢大家的帮助。简短的回答是我需要在 attrs.xml 中定义我的元值,例如" "
  • Siddharth,我可以将我的颜色放入 colors.xml 中,但我将如何根据主题更改它们?
  • @EdwardFalk 如何在我的活动中获得 labelColor?我可以使用以下行获取 colors.xml 中的颜色:getResources().getColor(R.id.labelColor);但是,如果它在 attr.xml 文件中定义,我将如何获得这种颜色?

标签: android


【解决方案1】:

要在 Android 中使用主题和样式,您必须:

  1. 在themes.xml中定义一个或多个主题,并设置其定义 你的样式在那里。

  2. 在 attrs.xml 中定义自定义属性,也就是自定义样式。

  3. 在styles.xml 中描述自定义样式的值。

  4. 在你的布局文件中,给你的视图一个样式属性,它有一个 自定义样式名称作为它们的值。

  5. 将应用程序或活动的主题设置为 AndroidManifest.xml 或在 Activity 的 onCreate() 中。这是通过在调用 setContentView() 之前在 Activity 的 onCreate() 方法中调用 setTheme() 来完成的。

  6. 要更改主题,您只需重新启动 Activity。

建议你看看这个tutorial,它处理了程序员想要处理的所有 android 主题(文本颜色、文本格式、可绘制状态列表等......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多