Kotlin: Как изменить цвет фона кнопки переключения? - PullRequest
0 голосов
/ 25 марта 2020

Я надеюсь изменить фон кнопки переключения. Я думаю, что есть два способа: в xml и в коде ..

Я сделал, используя xml вот так, успешно ;

<ToggleButton
            android:id="@+id/downloadButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textOff="Download"
            android:textOn="Downloaded"
            android:background="@drawable/toggle_bg_sector"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

toggle_bg_sector. xml

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

toggle_download. xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/blue" />
</shape>

toggle_downloaded. xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/gray" />
</shape>

Это работает очень хорошо .. Однако я хочу знать, чтобы сделать это программно.

Я сделал это внутри onCreate.

downloadButton.setOnCheckedChangeListener { _: CompoundButton?, isChecked ->
            if (isChecked)
                downloadButton.setBackground(R.drawable.toggle_download)
            else
                downloadButton.setBackground(R.drawable.toggle_downloaded)
        }

Однако, я получил и сообщение об ошибке на R.drawable.toggle_download.

enter image description here

Может кто-нибудь объяснить это?

1 Ответ

0 голосов
/ 25 марта 2020

Вы также можете изменить цвет в MainActivity следующим образом

downloadButton.setOnCheckedChangeListener { _: CompoundButton?, isChecked ->
        if (isChecked)
            downloadButton.setBackground(R.drawable.red)
        else
             downloadButton.setBackground(R.drawable.blue)
    }

Таким образом, вы можете легко изменить цвет фона кнопки переключения

...