无法将背景属性绑定到颜色
Not able to bind background attribute to a color
我正在尝试根据 returns 布尔值的方法更改 TextView 的背景属性。
这就是我的 TextView 的样子
<data>
<variable
name="model"
type="fit.cure.meetingdisplay.MeetingModel" />
</data>
.....
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable"
android:gravity="center"
android:text="@{model.getAvailabilityText(), default=Available}"
android:textAllCaps="true"
android:textAppearance="@android:style/TextAppearance.Holo.Large.Inverse" />
模型如下-
public class MeetingModel {
private boolean isAvailable = false;
public boolean isAvailable() {
return isAvailable;
}
public void setAvailable(boolean available) {
isAvailable = available;
}
public String getAvailabilityText() {
if (isAvailable) {
return "available";
}
return "unavailable";
}
}
但是我在构建项目时遇到了这个错误 -
error: '@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable' is incompatible with attribute android:background (attr) reference|color.
Message{kind=ERROR, text=error: '@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable' is incompatible with attribute android:background (attr) reference|color., sources=[/Volumes/Projects/Work/Clients/CureFit/MeetingDisplay/app/src/main/res/layout/activity_main.xml:55], original message=, tool name=Optional.of(AAPT)}
我正在使用 @color/colorAvailable
因为有人提到 可以使用它。我还尝试了使用以下背景值的可绘制方法 -
"@{model.isAvailable() ? @drawable/drawable_available : @drawable/drawable_unavailable, default=@drawable/drawable_available"
可绘制对象在 colors.xml 中定义如下 -
<drawable name="drawable_available">@color/colorAvailable</drawable>
<drawable name="drawable_unavailable">@color/colorUnavailable</drawable>
仍然出现同样的错误。奇怪的是,默认值在这两种情况下都有效。
所以,是我做错了什么,还是根本不可能绑定背景属性(虽然我不认为这是不可能的)。
这是一个完美的例子,说明了为什么自动完成现在如此重要,以及为什么如果它在 xmls
中工作得更好,我们的生活会变得更好。您只是缺少右括号:
android:background="@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable}"
我正在尝试根据 returns 布尔值的方法更改 TextView 的背景属性。 这就是我的 TextView 的样子
<data>
<variable
name="model"
type="fit.cure.meetingdisplay.MeetingModel" />
</data>
.....
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable"
android:gravity="center"
android:text="@{model.getAvailabilityText(), default=Available}"
android:textAllCaps="true"
android:textAppearance="@android:style/TextAppearance.Holo.Large.Inverse" />
模型如下-
public class MeetingModel {
private boolean isAvailable = false;
public boolean isAvailable() {
return isAvailable;
}
public void setAvailable(boolean available) {
isAvailable = available;
}
public String getAvailabilityText() {
if (isAvailable) {
return "available";
}
return "unavailable";
}
}
但是我在构建项目时遇到了这个错误 -
error: '@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable' is incompatible with attribute android:background (attr) reference|color.
Message{kind=ERROR, text=error: '@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable' is incompatible with attribute android:background (attr) reference|color., sources=[/Volumes/Projects/Work/Clients/CureFit/MeetingDisplay/app/src/main/res/layout/activity_main.xml:55], original message=, tool name=Optional.of(AAPT)}
我正在使用 @color/colorAvailable
因为有人提到
"@{model.isAvailable() ? @drawable/drawable_available : @drawable/drawable_unavailable, default=@drawable/drawable_available"
可绘制对象在 colors.xml 中定义如下 -
<drawable name="drawable_available">@color/colorAvailable</drawable>
<drawable name="drawable_unavailable">@color/colorUnavailable</drawable>
仍然出现同样的错误。奇怪的是,默认值在这两种情况下都有效。
所以,是我做错了什么,还是根本不可能绑定背景属性(虽然我不认为这是不可能的)。
这是一个完美的例子,说明了为什么自动完成现在如此重要,以及为什么如果它在 xmls
中工作得更好,我们的生活会变得更好。您只是缺少右括号:
android:background="@{model.isAvailable() ? @color/colorAvailable : @color/colorUnavailable, default=@color/colorAvailable}"