2016-09-16 178 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背景进行对比..

我希望这可以帮助,'。