Android:在微调器的自定义布局中更改单选按钮的颜色

时间:2016-02-23 11:58:27

标签: android

我想在点击时更改单选按钮的颜色。我在自定义编辑文本和单选按钮上使用自定义布局。这是我的布局项目的xml。     

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true">

    <com.ekcoffee.ekcoffeeapp.widgets.AppTextView
        android:id="@+id/textViewCountryCode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:paddingRight="@dimen/dimen_10dp"
        android:text="+91 (India)"
        android:textColor="@color/color_black_text"
        android:textSize="@dimen/dimen_16sp"
        app:textStyle="@integer/OPEN_SANS_REGULAR" />


</RelativeLayout>

<RadioButton
    android:id="@+id/selector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:backgroundTint="@color/color_accent"
    android:checked="false"
    android:clickable="false"
    android:focusable="false"

    />

这是我的微调器的xml

<android.support.v7.widget.AppCompatSpinner
    android:id="@+id/spinnerCountryCode"
    style="@style/spinner_style"
    android:layout_width="@dimen/dimen_1dp"
    android:layout_height="@dimen/dimen_1dp"
    android:layout_alignParentBottom="true"
    android:hint="+91"
    android:spinnerMode="dialog"
    android:textColor="@color/color_splash_screen_text"
    android:textColorHint="@color/color_white"
    android:textSize="@dimen/dimen_25dp" />

我也使用了旋转器的样式

<style name="spinner_style" parent="Widget.AppCompat.Spinner.Underlined">
    <item name="android:background">@color/color_primary</item>
    <item name="android:layout_marginLeft">@dimen/dimen_48dp</item>
    <item name="android:layout_marginRight">@dimen/dimen_24dp</item>
    <item name="android:layout_marginBottom">10dp</item>
    <item name="android:checkMark">@drawable/ic_radio_checked</item>
    <item name="android:paddingLeft">8dp</item>
    <item name="android:layout_marginTop">100dp</item>
    <item name="android:paddingBottom">5dp</item>
</style>

3 个答案:

答案 0 :(得分:0)

更简单,只需设置 buttonTint颜色:(仅适用于api级别21或以上)

<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:checked="true"
    android:buttonTint="@color/your_color"/>

在你的 values / colors.xml 中,你的颜色在这种情况下是偏红的:

<color name="your_color">#e75748</color>

<强>结果:

enter image description here

答案 1 :(得分:0)

  int textColor = Color.parseColor(#000000);
    yourradiobutton.setButtonTintList(ColorStateList.valueOf(textColor));

将上面的代码放在按钮的onClick方法

答案 2 :(得分:0)

styles.xml放置 -

  <!-- custom style -->
  <style name="radionbutton"
         parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
    <item name="android:button">@drawable/radiobutton_drawable</item>
  </style>

xml中的radio button应如下所示 -

<RadioButton
    android:layout_width="wrap_content"
    style="@style/radionbutton"
    android:checked="false"
    android:layout_height="wrap_content"
    />

现在您需要做的就是制作radiobutton_drawable.xml in your drawable folder.以下是您需要加入的内容 -

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

您的 radio_unchecked.xml -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="oval">
  <stroke android:width="1dp" android:color="@color/colorAccent"/>
  <size android:width="30dp" android:height="30dp"/>
</shape>

您的 radio_checked.xml -

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="oval">
      <stroke android:width="1dp" android:color="@color/colorAccent"/>
      <size android:width="30dp" android:height="30dp"/>
    </shape>
  </item>
  <item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
    <shape android:shape="oval">
      <solid android:width="1dp" android:color="@color/colorAccent"/>
      <size android:width="10dp" android:height="10dp"/>
    </shape>
  </item>
</layer-list>

只需替换@color/colorAccent with the color of your choice.

即可