簡體   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