2014-02-12 95 views
13

我試圖在Android中更改我的開關的顏色。我意識到我將需要新的9個補丁。我去了http://android-holo-colors.com/並選擇了我的顏色並選擇了(Switch Jelly Bean)。要使用Switch Jelly Bean,我必須使用:https://github.com/BoD/android-switch-backport。爲了將其導入到項目中,我不得不補充:在Android中更改Switch的顏色

<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全息色彩發電機輸出的一切,把它放到正確的文件:

  • 繪製(2選擇文件)
  • 繪製,華電國際(9patch文件)
  • 繪製,xhdpi (9patch文件)
  • 繪製-xxhdpi(9patch文件)

然後我加入到我的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。有任何想法嗎?

+0

看看這個線程,很好的解釋[在機器人造型開關] [1] [1]:HTTP: //stackoverflow.com/questions/10118050/how-can-i-style-an-android-switch –

+0

我已經看過了。 Android holo顏色生成適當的9個補丁圖像和2個可繪製的選擇器文件,並且它們肯定在那裏,但沒有顯示出來。 – EGHDK

回答

21

按照this,(由董事會複製 - 粘貼直接回答):

  • 不得使用android:thumbandroid:track,而是app:thumbapp:track你必須添加以下到您的xml文檔的根:

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

+0

太好了。非常感謝你! – EGHDK

+0

我在拇指和軌道之前嘗試應用前綴,但它給出錯誤,但它不支持thumbtint和tracktint。你能幫忙嗎?謝謝 – Ankur1994a

1

這可能是你需要把

style="@style/switchStyle" 

在你的XML以及

2

改變開關的顏色,您可以使用兩個圖像

  1. 綠色 - 當開關ON
  2. 紅色 - 開關關閉時

現在把這個文件夾繪製

<?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" 
/> 
+0

與這個問題無關,我只是因爲我不能做到這一點而不給負面評價 – xanexpt

+0

好吧,它回答了標題中假設的問題。 – eimmer

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
Android中棒棒糖和上述

最簡單的方式,

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