我想在我的一个项目中改变RadioButton的圆圈的颜色,但我不知道该设置哪个属性。背景颜色是黑色的,所以它是看不见的。我想把圆圈的颜色设置为白色。
当前回答
这个kotlin扩展
fun RadioButton.setLangRadioColor(isCheck: Boolean) { val color = if (isCheck) { intArrayOf( ContextCompat.getColor(rootView.context, R.color.light_red), ContextCompat.getColor(rootView.context, R.color.light_red) ) } else { intArrayOf( ContextCompat.getColor(rootView.context, R.color.sortRadioUnselectColor), ContextCompat.getColor(rootView.context, R.color.sortRadioUnselectColor) ) } val colorStateList = ColorStateList( arrayOf( intArrayOf(-android.R.attr.state_enabled), // disabled intArrayOf(android.R.attr.state_enabled) // enabled ), color ) this.buttonTintList = colorStateList }
其他回答
最简单的方法是在值中更改colourAccent颜色-> colors .xml 但要注意,它也会改变其他东西,如编辑文本光标颜色等。
<颜色名称=“颜色强调”>#75aeff</颜色>
创建一个可绘制文件my_compound_button_color_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/text_app_color"/>
<item android:state_checked="true" android:color="@color/text_app_color"/>
<item android:color="@color/gray"/> </selector>
在style.xml文件中添加样式
<style name="AppRadioAppStyle" parent="Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:textColor">@drawable/my_compound_button_color_selector</item>
<item name="drawableTint">@drawable/my_compound_button_color_selector</item>
</style>
布局文件
<RadioButton
android:id="@+id/radio1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableBottom="?android:attr/listChoiceIndicatorSingle"
android:gravity="center_horizontal|bottom"
android:background="@drawable/app_border_0"
android:padding="@dimen/_15sdp"
android:text="@string/no"
android:fontFamily="@font/poppins_medium"
style="@style/AppRadioAppStyle"
android:layout_marginStart="@dimen/_10sdp"/>
应该添加android:button="@null"在你的单选按钮
如果你有android:buttonTint,它不会工作,你必须改变它到app:buttonTint。 在升级到androidx之后,我不得不这样做。
这个kotlin扩展
fun RadioButton.setLangRadioColor(isCheck: Boolean) { val color = if (isCheck) { intArrayOf( ContextCompat.getColor(rootView.context, R.color.light_red), ContextCompat.getColor(rootView.context, R.color.light_red) ) } else { intArrayOf( ContextCompat.getColor(rootView.context, R.color.sortRadioUnselectColor), ContextCompat.getColor(rootView.context, R.color.sortRadioUnselectColor) ) } val colorStateList = ColorStateList( arrayOf( intArrayOf(-android.R.attr.state_enabled), // disabled intArrayOf(android.R.attr.state_enabled) // enabled ), color ) this.buttonTintList = colorStateList }
有时候你只需要像这样重写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>
你会得到一个这样的按钮:
colorControlNormal用于未检查状态,colorAccent用于已检查状态。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件