Я пытаюсь создать настраиваемую кнопку переключения, чтобы отображать один значок, когда он имеет значение 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 выглядит так
и с установленным значением: true, изображение, которое я использовал как ложное, все еще показывает правое:
Тестирование в эмулятор с API 29 (Android Q)