我刚刚发现如何将变量绑定到xml文件,第一次这很难,但它确实加快了工作。
如何将变量绑定到imageView,以便 如果vabiable(boolean)从true变为false,ImageView SrcCompact也会发生变化?
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
app:srcCompat="@drawable/ic_bluetooth_indigo_a400_48dp"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_margin="20dp" />
这是我的 Imageview 代码,BlueTooth徽标为蓝色。 我想将其绑定到&#34; BluetoothEnable &#34;布尔值,如果&#34; BluetoothEnable &#34;去&#34; FALSE &#34;我希望 imageView 显示 SrcCompact ,其中蓝牙徽标为红色。
答案 0 :(得分:1)
如果有人遇到这种情况,我想分享一些解决方案。
当我尝试使用三元表达式时,它对我不起作用:
<ImageView
...
app:srcCompat="@{isBluetoothEnabled? @drawable/ic_bluetooth_green : @drawable/ic_bluetooth_red}"
... />
因此,我尝试了绑定适配器方法。
在这里,我创建了一个绑定适配器,该适配器将收到isBluetoothEnabled
的布尔值,然后根据它选择合适的可绘制图像:
public class BindingAdapters {
@BindingAdapter("app:bluetoothBasedSrc")
public static void setSendState(ImageView v, boolean isBluetoothEnabled) {
int drawableRes = isBluetoothEnabled ? R.drawable.ic_bluetooth_green : R.drawable.ic_bluetooth_red;
v.setImageResource(drawableRes);
}
}
在这里,我们如何在ImageView
中使用该绑定适配器:
<ImageView
...
app:bluetoothBasedSrc=@{isBluetoothEnabled}
tools:srcCompat="@drawable/ic_bluetooth_green"
... />
希望该解决方案有助于解决这种情况。