繁体   English   中英

关于drawable的Android数据绑定

[英]Android data binding on drawable

我有两个形状drawables,rounded_corners.xml和rounded_corners_red.xml,它们将分别用于显示有效的文本输入和无效的文本输入。

我希望在用户单击登录按钮时动态设置此drwable,以便在有效文本显示rounded_corners.xml且无效时显示rounded_corners_red.xml。

下面是我如何把它放在我的布局xml中。

<EditText android:id="@+id/et_ip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@={systemSettings.isValid ? @drawable/rounded_corners : @drawable/rounded_corners_red}"
android:text="@={systemSettings.serverIP, default=@string/ip_host}"
android:textColor="#000000" />

我想基于我的模型类中定义的isValid observable varible动态应用drawable。 我的代码编译没有错误。 但它会给出运行时错误

java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:The expression ((systemSettingsIsValidGet) ? (getDrawableFromResource(etIp, R.drawable.rounded_corners)) : (getDrawableFromResource(etIp, R.drawable.rounded_corners_red))) cannot cannot be inverted: The condition of a ternary operator must be constant: android.databinding.tool.writer.KCode@429a75fd
file:D:xxx\app\src\main\res\layout\fragment_system_settings.xml
loc:92:47 - 92:128
****\ data binding error ****

谁知道为什么会这样? 谢谢。

你的陈述是双向约束@={}

@={systemSettings.isValid ? @drawable/rounded_corners : @drawable/rounded_corners_red}`

这就是为什么你找到表明该表达式的错误的原因

不能不能倒

它甚至直截了当地给你理由:

三元运算符的条件必须是常数

但是因为你只是获得可绘制的资源,所以只需从表达式中删除=

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM