Изменить цвет индикатора прогресса с помощью привязки данных?

Я пробовал все способы, но я не могу изменить цвет индикатора выполнения. Пробовал менять не только как привязку, но и в переходнике, но не получается. Не могли бы вы помочь?

.....

    <com.google.android.material.progressindicator.CircularProgressIndicator
                            android:id = "@+id/progressBar"
                            android:layout_width = "160dp"
                            android:layout_height = "160dp"
                            android:progress = "25"
                            app:indicatorColor = "@{session.getChannel() == Channel.MOBILE ? @color/cerulean : @color/teal}"
                            app:indicatorDirectionCircular = "counterclockwise"
                            app:indicatorInset = "7dp"
                            app:indicatorSize = "140dp"
                            app:layout_constraintBottom_toBottomOf = "parent"
                            app:layout_constraintLeft_toLeftOf = "parent"
                            app:layout_constraintRight_toRightOf = "parent"
                            app:layout_constraintTop_toTopOf = "parent"
                            app:trackColor = "#DEE3ED"
                            app:trackCornerRadius = "5dp"
                            app:trackThickness = "9dp" />

я получаю эту ошибку в этом случае Не удается найти установщик для <com.google.android.material.progressindicator.CircularProgressIndicator app:indicatorColor>, который принимает тип параметра "android.content.res.ColorStateList" Если адаптер привязки предоставляет установщик, проверьте правильность аннотации адаптера и соответствие типа параметра.

val color = R.color.cerulean
             
progressBar.getIndeterminateDrawable().setColorFilter(color, 
                PorterDuff.Mode.SRC_IN)

А потом я попробовал этот код, но снова не удалось. неопределенный

0
0
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать пользовательский адаптер привязки, подобный этому

@BindingAdapter("app:indicatorColor")
fun setIndicatorColor(progress: CircularProgressIndicator, color: Int) {
    progress.setIndicatorColor(color)
}

После этого вы можете использовать свой код в xml

app:indicatorColor = "@{session.getChannel() == Channel.MOBILE ? @color/cerulean : @color/teal}"

Другие вопросы по теме