2012-12-28 133 views
19

的切換文本顏色要創建自定義切換按鈕,我在/res/values/styles.xml定義了一個新的風格:安卓:切換按鈕

<style name="myToggleButton"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textColor">#000000</item> 
    <item name="android:background">@drawable/my_toggle_button</item> 
</style> 

,然後我用一個選擇器來指定按鈕的狀態如何看待在/res/drawable/my_toggle_button.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true"> 
     <shape> 
      [...] 
     </shape> 
    </item> 
    <item android:state_checked="false" 
     <shape> 
      [...] 
     </shape> 
    </item> 
</selector> 

如何修改此設置以在狀態更改時切換按鈕的文本顏色?

+0

在形狀範圍,給你想要的顏色paremeters,並刪除style.xml中的背景。 – Tugrul

+0

我認爲這個鏈接對你的問題很有用:http://stackoverflow.com/questions/7096599/how-to-change-the-text-color-of-an-android-tooglebutton-on-state-change – secretlm

+0

Based在Eclipse中進行自動完成實驗時,該鏈接不提供有效的語法。指定顏色的唯一可能方式是在<'範圍內的'「。但它不會更改文字顏色。 –

回答

61

爲您想要的文字顏色創建一個類似的州列表,並將其放置在res/color,例如,

res/color/toggle_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:color="#070" /> 
    <!-- Default State --> 
    <item android:color="#A00" /> 
</selector> 

然後設置此資源作爲按鈕的文本顏色:

<item name="android:textColor">@color/toggle_color</item> 

PS,這是很好的做法,最後一個項目的選擇沒有附加任何狀態標誌(即默認狀態),而不是用上述狀態的倒數來定義它。

+1

完美,謝謝! –

+2

非常有幫助的答案 - 但我發現它並沒有運行,因爲大寫字符不允許在文件名中(至少API版本18) - 編輯:) – davnicwil