Кнопка переключения всегда показывает ложный значок state_checked - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь создать настраиваемую кнопку переключения, чтобы отображать один значок, когда он имеет значение true, и другой, когда он имеет значение false.

Я создал пользовательский селектор

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

и использую вот так:

<com.example.widgets.chart.layouts.ChartToggleButton
    android:id="@+id/chartToggleButton"
    android:layout_width="@dimen/m"
    android:layout_height="@dimen/m"
    app:layout_constraintTop_toTopOf="@id/periodFilter"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:clickable="true"/>

и мой класс ToggleButton выглядит следующим образом:

class ChartToggleButton @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : AppCompatToggleButton(context, attrs, defStyleAttr) {
    init {
        background = ContextCompat.getDrawable(context, R.drawable.bg_chart_toggle)
    }
}

said_check = false выглядит так

stated_check = false

и с установленным значением: true, изображение, которое я использовал как ложное, все еще показывает правое:

enter image description here

Тестирование в эмулятор с API 29 (Android Q)

...