【发布时间】:2019-11-04 14:03:11
【问题描述】:
我在使用数据绑定更新 drawableLeft 或 TextView 时遇到问题。
我的实时数据:
val iconLiveData = MutableLiveData<Drawable>()
我的绑定适配器:
@BindingAdapter("drawableLeft")
fun TextView.setDrawableLeft(drawable: Drawable?) {
Timber.d("Setting drawable from adapter: $drawable")
setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
}
布局中的TextView:
<TextView
...removed all other params for simplicity
drawableLeft="@{viewModel.iconLiveData}"/>
改变drawable的代码:
val drawable = repository.getDrawable(R.drawable.ic_google_fit)
Timber.d("Setting drawable: $drawable")
iconLiveData.value = drawable
当我执行值更改时会发生以下情况:
2019-11-04 14:49:51.296 23568-23568 D/LOG: Setting drawable: android.graphics.drawable.VectorDrawable@347943e
2019-11-04 14:49:51.298 23568-23568 D/LOG: Setting drawable from adapter: null
Drawable 进入LiveData,但当它进入BindingAdapter 时,它为空。看起来Drawable 无法通过LiveData 传递,但我找不到任何确认。
原因我不能使用资源来代替 Drawable。
【问题讨论】:
标签: android android-databinding