无法更改开关颜色

时间:2017-10-31 12:44:45

标签: android android-styles android-switch

我正在寻找仅将此颜色应用于所有开关。但默认情况下,切换时会使用colorAccent代替此主题。

装置:棉花糖。

布局:

<Switch
            android:id="@+id/soundSwitch"
            style="@style/SwitchStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginBottom="@dimen/large_space"
            android:layout_marginRight="@dimen/medium_space"
            android:layout_marginTop="@dimen/large_space"
            android:checked="true"
            />

样式-V21:

<style name="SwitchStyle" parent="Theme.AppCompat.Light">
        <!-- active thumb & track color (30% transparency) -->
        <item name="android:colorControlActivated">@color/switch_color</item>

        <!-- inactive thumb color -->
        <item name="colorSwitchThumbNormal">#f1f1f1</item>

        <!-- inactive track color (30% transparency) -->
        <item name="android:colorForeground">#42221f1f</item>
    </style>

我做错了什么?

3 个答案:

答案 0 :(得分:8)

您将样式主题混合在一起。

这些属性是主题属性,因此在主题叠加中将它们一起定义:

res / values / styles.xml (不是值-v21)

<style name="ThemeOverlay.MySwitch" parent="">
    <item name="android:colorControlActivated">@color/switch_color</item>
    <item name="android:colorSwitchThumbNormal">#f1f1f1</item>
    <item name="android:colorForeground">#42221f1f</item>
</style>

<style name="ThemeOverlay.MySwitchCompat" parent="">
    <item name="colorControlActivated">@color/switch_color</item>
    <item name="colorSwitchThumbNormal">#f1f1f1</item>
    <item name="android:colorForeground">#42221f1f</item>
</style>

然后在交换机上应用此主题叠加层:

<强> RES /布局/ layout.xml

<Switch android:theme="@style/ThemeOverlay.MySwitch"/>

<android.support.v7.widget.SwitchCompat android:theme="@style/ThemeOverlay.MySwitchCompat"/>

选择以下两种变体中的一种:

    自API 21起,
  • Switch可用,所有主题属性都以android:为前缀
  • appcompat-v7支持库中提供了
  • SwitchCompat,一些主题属性没有前缀(确保你知道哪个)。

答案 1 :(得分:1)

将此添加到style.xml以获取开关样式。

<style name="SwitchThemeOverlay" parent="">
    <!-- active thumb & track color (30% transparency) -->
    <item name="colorControlActivated">#00c853</item>

    <!-- inactive thumb color -->
    <item name="colorSwitchThumbNormal">#CC0000</item>

    <!-- inactive track color (30% transparency) -->
    <item name="android:colorForeground">#666666
    </item>
</style>

并在你的xml中使用

 <android.support.v7.widget.SwitchCompat
        android:id="@+id/switch_desc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/colorPrimaryDark"
        android:padding="5dp"
        android:checked="false"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:theme="@style/SwitchThemeOverlay"
        android:layout_marginLeft="10dp"
        android:text="Description"/>

答案 2 :(得分:1)

您可以尝试使用android.support.v7.widget.SwitchCompat代替Switchandroid:theme=@style/SwitchStyle代替style="@style/SwitchStyle"