我需要根据状态为ProgressBar设置不同的背景-两个图标和加载动画。如果我从xml这样设置,就可以使用它:
android:indeterminateDrawable="@drawable/icon"
但是我正在尝试通过数据绑定来进行编程更新。我的绑定适配器:
@BindingAdapter("state")
fun setState(view: ProgressBar, state: DetailsViewModel.ProgressState?) {
when(state) {
DetailsViewModel.ProgressState.Unpaired -> {
view.indeterminateDrawable = view.resources.getDrawable(R.drawable.ic_unpaired)
}
DetailsViewModel.ProgressState.Checking -> {
view.indeterminateDrawable = view.resources.getDrawable(R.drawable.circular_progress_bar)
}
//....
}
}
如果我从适配器图标设置它,则不会出现,并且进度动画没有运行(但是确实有)。可能我缺少某些属性更新或类似内容。我也尝试调用invalidate()。
做这种事情的正确方法是什么?
数据绑定与此无关。您可能只是忘记了在进度条上调用setIndeterminate(true);
。默认情况下,它没有设置此标志。