为不同的主题配置不同的颜色

时间:2019-12-29 13:20:50

标签: android android-theme

我正在尝试配置DayNight主题。

我的 values / style.xml 和( values-night / style.xml )是:

<resources>
  <!-- Base application theme. -->
  <style name="AppTheme" parent="Theme.AppCompat.DayNight">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
  </style>
  <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
  </style>
  <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
</resources>

colors.xml 是:

<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>
    <color name="lSun">#ff9800</color>
    <color name="lMoon">#3f51b5</color>
    <color name="lMoonDark">#4f9fbd</color>
</resources>

现在,像

 <TextView
              android:id="@+id/mr_icon"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/longi"
              android:layout_marginStart="16dp"
              android:layout_marginTop="5dp"
              android:layout_toEndOf="@+id/sunset"
              android:fontFamily="@font/weathericons"
              android:paddingTop="-2dp"
              android:text="@string/moonrise"
              android:textAlignment="center"
              android:textAppearance="@android:style/TextAppearance.Material.Menu"
              android:textColor="@color/lMoon"
              android:textSize="14sp" />

在这里,我希望@color/lMoon代表浅色主题,@color/lMoonDark代表深色主题。

我该如何实现?

1 个答案:

答案 0 :(得分:0)

制作两种样式,并将所需样式赋予TextView。

<style name="MyTextView" parent="@android:style/TextAppearance.Small">
   <item name="android:layout_width">wrap_content</item>
   <item name="android:layout_height">wrap_content</item>
   <item name="android:textColor">@android:color/white</item>
   <item name="android:textSize">12sp</item>
</style>

<TextView
          style="@style/MyTextView"
          android:id="@+id/mr_icon"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_below="@+id/longi"
          android:layout_marginStart="16dp"
          android:layout_marginTop="5dp"
          android:layout_toEndOf="@+id/sunset"
          android:fontFamily="@font/weathericons"
          android:paddingTop="-2dp"
          android:text="@string/moonrise"
          android:textAlignment="center"
          android:textAppearance="@android:style/TextAppearance.Material.Menu"
          android:textColor="@color/lMoon"
          android:textSize="14sp" />