Я пытаюсь применить условное значениеCircleImageView: присвоить условное значение атрибута XML безвыходном: civ_border_color
<?xml version="1.0" encoding="utf-8"?>
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="com.myproject.dialogs.MessageViewModel" />
</data>
<FrameLayout
android:layout_width="@dimen/dialogs_messages_height_max"
android:layout_height="@dimen/dialogs_messages_height_max">
<TextView
android:id="@+id/description_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dialogs_messages_item_text_top_margin_at_max"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@{viewModel.userName}"
android:textColor="@color/dark_primary_text"
android:textSize="16sp"
tools:text="Masha Petrova Vladimirovna" />
<!-- when resizing messages - names goes under photo -->
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="96dp"
android:id="@+id/photo"
android:layout_height="96dp"
android:layout_gravity="center"
android:src="@drawable/empty_circle_photo"
bind:civ_border_color="@{viewModel.isRead ? @color/red : @color/green}"
bind:civ_border_width="3dp"
bind:strokedAvatar="@{viewModel.avatarUrl}"
android:layout_marginBottom="@dimen/base_double_indent"/>
</FrameLayout>
компилятор выдает ошибку
Error:(40, 38) Cannot find the setter for attribute 'bind:civ_border_color' with parameter type int on de.hdodenhof.circleimageview.CircleImageView.
, когда я назначаю
bind:civ_border_color="@color/green"
все компилирует хорошо
Я defenitely недостающих некоторые жизненно вещь.
Вот ViewModel класс:
public class MessageViewModel extends BaseObservable {
public final ObservableField<String> avatarUrl = new ObservableField<>();
public final ObservableField<String> userName = new ObservableField<>();
public final ObservableField<String> when = new ObservableField<>();
public final ObservableField<Boolean> isRead = new ObservableField<>();
public void setModel(DialogsList.Dialog model) {
if (model != null) {
User user = model.getUser();
if (user != null) {
Photo avatar = user.getAvatar();
if (avatar != null) {
avatarUrl.set(avatar.getDefaultLink());
}
userName.set(user.getName());
when.set(TimeUtils.getRelativeDate(model.getUpdateDate() * 1000L, true));
isRead.set(true);
}
}
}
}
В файле attr.xml проверьте, где вы определили атрибут f или 'civ_border_color', как и другие атрибуты – arjun
Это потому, что' CircleImageView.setBorderColor' не называется 'setCivBorderColor' ... blind guess: используйте' bind: border_color' вместо – Selvin