更改单选button的圆形颜色 – Android

我想改变单选button的圆的颜色,我不明白哪个属性设置。我有的背景颜色是黑色的,所以它变得不可见。我想设置圆的颜色为白色。

一般来说,这个网站非常适合自定义Android组件: http : //android-holo-colors.com/

只要select单选button,使颜色白色,下载,并获利!

更多信息

如果这样做后,你不能看到你所要求的改变。 然后你必须确保AndroidManifest.xml正在应用什么主题。

也看到你有没有应用任何风格的activity

只要清除这些东西,这将工作100%正确。

更简单的,只需设置buttonTint的颜色:(只适用于api level 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> 

结果:

彩色的Android单选按钮

如果你想通过代码(也是api 21和avobe)来做到这一点:

 if(Build.VERSION.SDK_INT>=21) { ColorStateList colorStateList = new ColorStateList( new int[][]{ new int[]{-android.R.attr.state_enabled}, //disabled new int[]{android.R.attr.state_enabled} //enabled }, new int[] { Color.BLACK //disabled ,Color.BLUE //enabled } ); radio.setButtonTintList(colorStateList);//set the color tint list radio.invalidate(); //could not be necessary } 

更新: 1.使用这个代替

  <android.support.v7.widget.AppCompatRadioButton android:id="@+id/rbtn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/primary" /> 

2.然后将此行添加到父级布局或在Android Studio中Alt + Enter自动添加xmlns:app="http://schemas.android.com/apk/res-auto"

最小示例应该如下所示:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.AppCompatRadioButton android:id="@+id/rbtn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/primary" /> </LinearLayout> 

在你的程序中,应该这样调用。 AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);

基本上,这种模式可以应用于所有的AppCompacttypes,如AppCompatCheckBox,AppCompatButton等等。

老答案:

为了支持下面的Android API 21,你可以使用AppCompatRadioButton。 然后使用setSupportButtonTintList方法更改颜色。 这是我创build一个单选button的代码片段。

  AppCompatRadioButton rb; rb = new AppCompatRadioButton(mContext); ColorStateList colorStateList = new ColorStateList( new int[][]{ new int[]{-android.R.attr.state_checked}, new int[]{android.R.attr.state_checked} }, new int[]{ Color.DKGRAY , Color.rgb (242,81,112), } ); rb.setSupportButtonTintList(colorStateList); 

testing结果在API 19:

这个是在API 19上测试的

有关更多详细信息,请参阅android 参考链接 。

 <android.support.v7.widget.AppCompatRadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/Color" /> 

在API前21以及后21工作。在你的styles.xml

 <!-- custom style --> <style name="radionbutton" parent="Base.Widget.AppCompat.CompoundButton.RadioButton"> <item name="android:button">@drawable/radiobutton_drawable</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">false</item> <item name="android:backgroundDimEnabled">true</item> </style> 

xml中的radio button应该如下所示:

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

现在你所要做的就是在你的drawable folder创build一个radiobutton_drawable.xml 。 这里是你需要把它放在:

 <?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> 

只需用您select的颜色replace@color/colorAccent

问题是旧的,但我想我的答案会帮助人们。 您可以使用xml中的样式来更改单选button的未选中和已选状态的颜色。

 <RadioButton android:id="@+id/rb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:theme="@style/RadioButtonStyle" /> 

在style.xml中

 <style name="RadioButtonStyle" parent="Theme.AppCompat.Light"> <item name="colorAccent">@android:color/white</item> <item name="android:textColorSecondary">@android:color/white</item> </style> 

您可以使用此样式设置所需的颜色。

设置buttonTint属性。 例如, android:buttonTint="#99FF33"

你必须使用这个代码:

 <android.support.v7.widget.AppCompatRadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:buttonTint="@color/black" android:text="Radiobutton1" app:buttonTint="@color/black" /> 

使用“应用程序:buttonTint”而不是“android:buttonTint”,而且“android.support.v7.widget.AppCompatRadioButton”,而不是“Radiobutton”!

RadioButton默认采用res / values / colors.xml文件中colorAccent的颜色。 所以去那个文件并改变它的值

<color name="colorAccent">#3F51B5</color>

到你想要的颜色。

有时你只需要像这样覆盖colorControlNormal

  <style name="RadioButtonStyle" parent="AppTheme"> <item name="colorControlNormal">@color/pink</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:textColorSecondary">@color/black</item> </style> 

你会得到这样一个button:

在这里输入图像说明

colorControlNormal用于未选中状态和colorAccent用于检查。

它有一个xml属性:

 android:buttonTint="yourcolor" 
 <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radio" android:buttonTint="@color/my_color"/> 

所有button都会改变颜色,圆框和中央检查。

我做了这样的简短的方式(API前21以及后21)

xml中的单选button应该如下所示

  <RadioButton android:id="@+id/radioid" android:layout_height="wrap_content" android:layout_width="wrap_content" android:button="@drawable/radiodraw" /> 

在radiodraw.xml中

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" > <shape android:shape="oval" > <stroke android:width="1dp" android:color="#000"/> <size android:width="30dp" android:height="30dp"/> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:state_checked="true"> <layer-list> <item> <shape android:shape="oval"> <stroke android:width="1dp" android:color="#000"/> <size android:width="30dp" android:height="30dp"/> <solid android:color="@android:color/transparent"/> </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="#000"/> <size android:width="10dp" android:height="10dp"/> </shape> </item> </layer-list> </item> </selector> 

必须添加透明颜色以绘制未经检查的状态;否则,绘制出纯黑色的椭圆形。

  1. 在styles.xml文件中声明自定义样式。

     <style name="MyRadioButton" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@color/indigo</item> <item name="colorControlActivated">@color/pink</item> </style> 
  2. 通过android:theme属性将此样式应用于您的RadioButton。

     <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Radio Button" android:theme="@style/MyRadioButton"/> 

    只有当您的活动延伸AppCompatActivity

最简单的方法是在values->colours.xml更改colourAccent颜色
但要注意的是,它也会改变其他的东西,比如编辑文本光标的颜色等。

< color name="colorAccent">#75aeff</color >

@ jh314是正确的。 在AndroidManifest.xml中,

  <application android:allowBackup="true" android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/AppTheme"></application> 

在style.xml中

  <!-- Application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorAccent">@color/red</item> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> 

项目名称必须是colorAccent,它决定应用程序的小部件默认颜色。

但是如果你想改变代码的颜色,Maybe @ aknay的答案是正确的。