У меня есть панель поиска:
<SeekBar
android:id="@+id/sw_lock"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="60dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="60dp"
android:max="100"
android:thumb="@drawable/ic_thumb"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/lbl_device_status" />
Я использую привязку данных, и все работает нормально. Проблема возникает, когда я хочу изменить цвет большого пальца.
Во фрагменте у меня есть вертикальный линейный макет, содержащий 0 ... n представлений, которые содержат эту панель поиска
response.observe(viewLifecycleOwner, Observer { list ->
activity?.run {
list.forEach { element ->
val mView = MyView(this)
mView.layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
mView.bind(element)
mView.didUnlock = { view, unlocked, element ->
//DO STUFF
}
binding.container.addView(mView)
}
}
})
Это работает нормально. У меня есть n экземпляров, и каждый экземпляр работает должным образом.
Теперь я хочу изменить цвет большого пальца при изменении прогресса, поэтому у меня есть:
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
changeColor(binding.swLock.progress > 80)
}
и метод changeColor выглядит следующим образом:
private fun changeColor(active: Boolean) {
val color = if(active) {
R.color.colorAccent
} else {
R.color.text_main
}
binding.swLock.progressDrawable.setTint(getColor(color))
binding.swLock.thumb.setTint(getColor(color))
}
А вот и странная вещь: progressDrawable меняется в каждом случае, большой палец меняется во всех случаях. Что я делаю не так?
Спасибо и всего наилучшего