Привязка данных android к андроиду: фоновый атрибут с использованием строкового цветового кода

У меня есть цветовой код, который хранится как строка в объекте данных с именем bean как bean ниже:

 public class SpaceBean extends BaseObservable { private String selectedThemeColor; @Nullable @Bindable public String getSelectedThemeColor() { return selectedThemeColor; } public void setSelectedThemeColor(String selectedThemeColor) { this.selectedThemeColor = selectedThemeColor; notifyPropertyChanged(BR.selectedThemeColor); } } 

Я хотел бы использовать выражение привязки данных в линейном макете android:background атрибут вроде:

 <LinearLayout android:id="@+id/ll_space_detail_overlay" android:layout_width="match_parent" android:layout_height="144dp" android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/common_margin" android:layout_marginEnd="@dimen/common_margin" android:layout_marginStart="@dimen/common_margin" android:background="@{bean.selectedThemeColor}" android:clickable="true" android:orientation="vertical" android:padding="@dimen/common_padding" android:visibility="visible"> 

Но он не скомпилируется с ошибкой:

Ошибка: (80, 35) Не удается найти установщик для атрибута «андроид: фон» с типом параметра java.lang.String на android.widget.LinearLayout.

Потому что нет такого метода, как View.setBackground («# f0f»)!

Вместо этого вы можете вернуть значение цвета Drawable или ARGB в свой SpaceBean.getSelectedThemeColor ().

Например:

 public class SpaceBean extends BaseObservable { private String selectedThemeColor; @Nullable @Bindable public Drawable getSelectedThemeColor() { return new ColorDrawable(Color.parseColor(selectedThemeColor)); } public void setSelectedThemeColor(String selectedThemeColor) { this.selectedThemeColor = selectedThemeColor; notifyPropertyChanged(BR.selectedThemeColor); } } 
Intereting Posts