我有一个过滤栏,它为每个字母(“A”、“B”、“C”...)显示一个单独的 TextView。我想实现这一点,当我用 A
单击 TextView 时,它会变成粗体,而所有其他 TextView 应该恢复为正常字体样式。如果我随后单击 C
,A
(和所有其他)TextView 应该显示正常,“C”应该显示粗体。
有没有一种有效的方法可以通过数据绑定(bind)来解决这个问题?我想避免为每个文本字段编写 LiveData 属性。
最佳答案
只需创建一个 ObservableField<>
与 selectedId
或 selectedText
在你的 viewModel 中的 View 中,还在 viewModel 中添加一个方法 changeSelectedValue
并直接从 xml onClick
向其传递 View .
接下来,您必须创建自定义绑定(bind)适配器,它将接受您的 ObservableField<>
与 selectedId
或 selectedText
, 并将检查该值是否与自身相同。
所以一切都可以通过数据绑定(bind)来完成。您需要一些代码示例吗?
关于Android DataBinding 在点击时更改其他 View 的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536791/