我们如何在自定义数据绑定属性中写入原始字符串?

时间:2019-03-06 08:54:15

标签: android data-binding loadimage android-binding-adapter

我为加载图片网址编写了一个自定义属性,如下所示:

@BindingAdapter("srcCircleUrl")
fun loadCircleImage(view: ImageView, imageUrl: String) {
    loadImage(view.context, imageUrl, view, options = circleCropTransform())
}

当我想在xml中设置原始字符串时,它给了我srcCircleUrl attribute not found错误。

例如,如果我写这样的话,它将不起作用:

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginBottom="16dp"
    app:srcCircleUrl="https://66.media.tumblr.com/97bcd9782631f8bef87bb30e830344a6/tumblr_owxu10zbPB1tl4ciuo4_250.png"
    android:scaleType="centerCrop"
    tools:srcCompat="@drawable/flag_iran" />

所以,问题是,如何将原始字符串作为自定义数据绑定属性的输入?


我还测试了这些方法:

app:srcCircleUrl="@{https://66.media.tumblr.com/97bcd9782631f8bef87bb30e830344a6/tumblr_owxu10zbPB1tl4ciuo4_250.png}"

app:srcCircleUrl="@{`https://66.media.tumblr.com/97bcd9782631f8bef87bb30e830344a6/tumblr_owxu10zbPB1tl4ciuo4_250.png`}"

2 个答案:

答案 0 :(得分:1)

您需要使用单引号和大括号将字符串括起来,例如app:something='@{"my string"}'

我认为这应该对您有用:

<ImageView
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginBottom="16dp"
    app:srcCircleUrl='@{"https://66.media.tumblr.com/image.png"}'
    android:scaleType="centerCrop"
    tools:srcCompat="@drawable/flag_iran" />

答案 1 :(得分:0)

我认为您需要从数据绑定资源中以url格式返回u您无法直接将https url传递给app:srcUrl

iptables -A OUTPUT -d 10.0.0.183 -j DROP
iptables -A INPUT -d 10.0.0.183 -j DROP