Как настроить приложение: backgroundTint, используя Android Привязка данных LiveData - PullRequest
1 голос
/ 17 апреля 2020

val inputUnderLineColor = MutableLiveData(R.color.red2)

app:backgroundTint="@{viewModel.inputUnderLineColor}"

Я хочу установить значение цвета EditText UnderLine в зависимости от состояния, но я получаю следующую ошибку

Cannot find a setter for <android.widget.EditText app:backgroundTint> that accepts parameter type 'androidx.lifecycle.MutableLiveData<java.lang.Integer>'

Как вы решаете это ??

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать его, как показано ниже ContextCompat.getColor()

 <layout>
         <data>
                <import type="android.support.v4.content.ContextCompat"/>
                <variable name="viewModel" type="com.example.myapp.yourObject" />
            </data>
        ...
         <EditText 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{data.text}"
                android:textColor="@{ContextCompat.getColor(context, viewModel.inputUnderLineColor)}" />
    </layout>

1. Обязательно импортируйте ContextCompat, как показано выше.

2. Вы можете автоматически использовать «контекст» в качестве параметра метода для ContextCompat.getColor (), поскольку он будет автоматически преобразован в контекст представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...