Селектор не отвечает на событие клика - PullRequest
0 голосов
/ 10 декабря 2018

Я пытался понять, почему

<Button
            android:id="@+id/partTime"
            style="@style/FilterFragment.JobTypeButton"
            android:layout_marginStart="8dp"
            android:onClick="@{(view) -> vm.updateJobType(view.getId())}"
            android:text="@string/part_time"
            app:layout_constraintStart_toEndOf="@+id/fullTime"
            app:layout_constraintTop_toTopOf="@+id/fullTime" />

со стилем

<style name="FilterFragment"/>
<style name="FilterFragment.JobTypeButton" parent="TextLittleButtonWhite">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@drawable/background_job_type</item>
    <item name="android:padding">8dp</item>
    <item name="android:drawableLeft">@drawable/add</item>
    <item name="android:drawablePadding">8dp</item>
    <item name="android:textAllCaps">false</item>
</style>

, фон которого является селектором

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background_job_type_selected" android:state_pressed="true" android:state_selected="true" />
<item android:drawable="@drawable/background_job_type_selected" android:state_pressed="true" />
<item android:drawable="@drawable/background_job_type_selected" android:state_selected="true" />
<item android:drawable="@drawable/background_job_type_unselected" />

не обновляется при выборе.Я не могу найти что-то не так с любым из них, и если вы выберете кнопку, уничтожите фрагмент и вернетесь к исходному фрагменту, появится соответствующий фон.Почему фон не обновляется при нажатии кнопки?

1 Ответ

0 голосов
/ 11 декабря 2018

Решением было создать

@BindingAdapter("selected")
fun Button.select(selected: Boolean) {
    isSelected = selected
}

и добавить его к кнопке следующим образом (атрибут bottom)

<Button
            android:id="@+id/partTime"
            style="@style/FilterFragment.JobTypeButton"
            android:layout_marginStart="8dp"
            android:onClick="@{(view) -> vm.updateJobType(view.getId())}"
            android:text="@string/part_time"
            app:layout_constraintStart_toEndOf="@+id/fullTime"
            app:layout_constraintTop_toTopOf="@+id/fullTime"
            app:selected="@{vm.isPartTime}" />

Обновления onClick isPartTime в моей модели просмотра,что наблюдается app:selected.vm.isPartTime привязывает ObservableBoolean моей модели представления к кнопке.

...