视图的自定义样式的几个主题

时间:2015-05-28 13:21:26

标签: android android-theme android-styles

我有一个应用主题和许多针对不同View的自定义样式。

例如,代码片段:

<!-- styles.xml -->
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light" />

<style name="title">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">22sp</item>
    <item name="android:padding">10sp</item>
    <item name="android:gravity">center_horizontal</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:background">@color/background_all_screen</item>
</style>

<style name="label">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:textSize">18sp</item>
    <item name="android:layout_alignParentLeft">true</item>
    <item name="android:layout_marginLeft">5dp</item>
</style>

<style name="button">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">2dp</item>
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:background">@color/blue</item>
</style>

现在我想为应用程序制作许多颜色主题。这意味着,在不同颜色的主题中,自定义View具有不同的颜色。 例如,在一个颜色主题按钮是蓝色,在另一个 - 红色。

如何实现此资源以轻松更改主题? There is a useful tutorial,但元素的自定义样式呢?

更新:try it,但这不起作用:

<style name="Button.MyButton" parent="android:style/Widget.Button">
  <item name="android:background">@drawable/shape</item>
</style>

<style name ="Button.MyButton.Theme1">
   <item name="android:textColor">#000000</item>
</style>

<style name ="Button.MyButton.Theme2">
   <item name="android:textColor">#FFFFFF</item>
</style>

<Button
    android:id="@+id/save_button" 
    android:layout_width="0px" 
    style="@style/Button.MyButton"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:text="@string/save"/>

1 个答案:

答案 0 :(得分:0)

This is answer.我只是使用属性,之后我可以在不同的主题中使用不同的颜色。

<!-- values/attributes.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="myCoolColor" format="color" />
</resources>

<!-- styles.xml, define myCoolColor for each theme -->

<style name="Theme.MyApp" parent="@style/Theme.Light">
   <item name="myCoolColor">#123456</item>
</style>

<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
   <item name="myCoolColor">#654321</item>
</style>