在Android中更改Switch的颜色

时间:2014-02-12 16:54:31

标签: java android xml android-theme android-styles

我正在尝试更改Android中交换机的颜色。我意识到我需要新的9件。我走到http://android-holo-colors.com/并选择了我的颜色并选择了(Switch Jelly Bean)。要使用Switch Jelly Bean,我必须使用:https://github.com/BoD/android-switch-backport。要将它导入我的项目,我必须添加:

<item name="switchStyle">@style/Widget.Holo.CompoundButton.Switch</item>

到我的样式,然后在xml中我必须像这样使用开关:

<org.jraf.android.backport.switchwidget.Switch android:layout_width="wrap_content" android:layout_height="wrap_content" />

现在切换的一切正常。接下来,我从android全息颜色生成器输出所有内容并将其放入正确的文件中:

  • drawable(2个选择器文件)
  • drawable-hdpi(9patch files)
  • drawable-xhdpi(9patch files)
  • drawable-xxhdpi(9个补丁文件)

然后我添加到我的xml:

<org.jraf.android.backport.switchwidget.Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:thumb="@drawable/apptheme_switch_inner_holo_light" android:track="@drawable/apptheme_switch_track_holo_light" />

但它仍然是原始的蓝色。我相信我正在做的一切正确。一切都编译(xml,java)。注意:我也在我的java中导入org.jraf.android.backport.switchwidget.Switch。有什么想法吗?

5 个答案:

答案 0 :(得分:21)

  

根据this,(BoD复制粘贴直接回答):

  • 您不能使用android:thumbandroid:track,而应使用app:thumbapp:track并且必须将以下内容添加到xml文档的根目录中:

    xmlns:app="http://schemas.android.com/apk/res-auto"

答案 1 :(得分:4)

Android Lollipop及以上版本中的最简单方法,

<style name="AppTheme" parent="MaterialTheme.Light">
    ...
    <item name="android:colorControlActivated">@color/color_switch</item>
</style>

答案 2 :(得分:2)

更改开关的颜色可以使用两个图像

  1. 绿色 - 开关打开时
  2. 红色 - 开关关闭时
  3. 现在将此文件放在可绘制文件夹

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@drawable/blue_checked" android:state_checked="true"/>
        <item android:drawable="@drawable/blue_unchecked" android:state_checked="false"/>
    
    </selector>
    

    并在布局XML文件中使用它如下

    <CheckBox
        android:id="@+id/user_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@drawable/notif_checkbox_selector"
    />
    

答案 3 :(得分:2)

试试这个:

switch_thumb.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_enabled="false" android:drawable="@drawable/switch_thumb_holo_light" />
        <item android:state_pressed="true"  android:drawable="@drawable/switch_thumb_activated_holo_light" />
        <item android:state_checked="true"  android:drawable="@drawable/switch_thumb_activated_holo_light" />
        <item                               android:drawable="@drawable/switch_thumb_holo_light" />
    </selector>

在交换机的布局中:

android:thumb="@drawable/switch_thumb"

答案 4 :(得分:1)

可能需要放

style="@style/switchStyle"

在您的XML中