更改单选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>
结果:
如果你想通过代码(也是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:
有关更多详细信息,请参阅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>
必须添加透明颜色以绘制未经检查的状态;否则,绘制出纯黑色的椭圆形。
-
在styles.xml文件中声明自定义样式。
<style name="MyRadioButton" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@color/indigo</item> <item name="colorControlActivated">@color/pink</item> </style>
-
通过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的答案是正确的。