我试图理解为什么
<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" />
在被选择时不会更新。我找不到其中的任何错误,如果选择一个按钮,销毁片段,然后返回原始片段,则会显示适当的背景。为什么选择按钮后背景没有更新?
答案 0 :(得分:0)
解决方案是创建
@BindingAdapter("selected")
fun Button.select(selected: Boolean) {
isSelected = selected
}
并将其添加到按钮中(底部属性)
<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
绑定到按钮。