2016-09-16 313 views
1

我該怎麼做?選中時RadioButton的顏色和文字顏色發生變化

enter image description here

這是我用它來改變文字顏色:

maleRadioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        maleRadioButton.setTextColor(getApplicationContext().getResources().getColor(R.color.colorPrimary)); 
       } else { 
        maleRadioButton.setTextColor(getApplicationContext().getResources().getColor(R.color.lightGray)); 
       } 
      } 
     }); 

,我設置<item name="android:buttonTint">@color/colorAccent</item>,但未被選中的單選按鈕是colorAccent而不是lightGray

任何想法?

+1

您是否嘗試過在您的可繪製中實現選擇器 –

+0

使用StateList –

+0

不能。在這種情況下,我如何使用'StateList'? – y07k2

回答

2

custom_radio_button.xml

<?xml version="1.0" encoding="utf-8"?> 

    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

     <item android:state_checked="true" android:drawable="@drawable/checkedradiobutton" /> 
     <item android:state_checked="false" android:drawable="@drawable/unchekedradiobutton" /> 

    </selector> 

使用兩個可繪所選和未被選擇的單選按鈕

,並使用上述選擇作爲狀態:

<!-- Customized RadioButtons --> 


       <RadioButton 
        android:id="@+id/radioButtonCustomized1" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Radio Button Selected" 
        android:layout_marginTop="20dp" 
        android:checked="true" 
        android:button="@drawable/custom_radio_button" 
        android:textSize="20dp" /> 

      <RadioButton 
        android:id="@+id/radioButtonCustomized2" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Radio Button Not Selected" 
        android:layout_marginTop="10dp" 
        android:checked="false" 
        android:button="@drawable/custom_radio_button" 
        android:textSize="20dp" /> 
1

要在選擇/選中/改變焦點時更改文本顏色在android:te中使用此colorList xtColor了Widget:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/color1" android:state_focused="true" android:state_pressed="false"/> 
    <item android:color="@color/color1" android:state_focused="true" android:state_pressed="true"/> 
    <item android:color="@color/color1" android:state_focused="false" android:state_pressed="true"/> 
    <item android:color="@color/color1" android:state_checked="true"/> 
    <item android:color="@color/color2"/> 
</selector> 

和按鈕的背景使用android系統:背景:

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

注COLOR1的使用在文本checked_state和unchecked_state背景進行對比..

我希望這可以幫助,'。