Android изменить цвет формы, используемый в пользовательском переключателе программно - PullRequest
0 голосов
/ 25 ноября 2018

Я создаю пользовательскую радио-кнопку, используя этот код:

layout.xml

<RadioButton
        android:id="@+id/radio0"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:background="@drawable/control_radio_button"
        android:button="@android:color/transparent"
        android:checked="false" />

@ drawable / control_radio_button

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/control_radio_bg_false" android:state_checked="true" android:state_pressed="true" />
    <item android:drawable="@drawable/control_radio_bg_true" android:state_pressed="true" />
    <item android:drawable="@drawable/control_radio_bg_true" android:state_checked="true" />
    <item android:drawable="@drawable/control_radio_bg_false" />
</selector>

@ drawable / control_radio_bg_true

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="999dp" />
    <stroke
        android:width="2dip"
        android:color="#E0E0E0" />
    <solid android:color="#f44336" />
</shape>

@ drawable / control_radio_bg_true

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="999dp" />
    <stroke
        android:width="6dp"
        android:color="#bfbfbf" />
    <solid android:color="#f44336" />
</shape>

могу ли я изменить фон @drawable/control_radio_bg_false и @drawable/control_radio_bg_true программно.

Я хочу создать список моих собственных переключателей с другим цветом с помощью адаптера (в обзоре переработчика).

как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Я провел много исследований для кода kotlin и нашел это.Добавим это сюда, чтобы, если кто-то еще пришел, специально искал котлин.После добавления вашей нарисованной фигуры в качестве фона вашего вида добавьте следующий код в соответствующее действие.

YourViewID.background.setColorFilter(Color.parseColor("#00000"),PorterDuff.Mode.SRC_OVER)
0 голосов
/ 26 ноября 2018

Вы можете попробовать что-то вроде следующего:

(radio0.background as? ShapeDrawable)?.apply {
    paint.color = ContextCompat.getColor(context, R.color.new_color)
}

Вы должны обрабатывать состояния самостоятельно, но это должно охватывать вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...