我们如何在自定义数据绑定属性中写入原始字符串?
How we write raw string in a custom databinding attribute?
我为加载图像 url 写了一个自定义属性,如下所示:
@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`}"
我认为你需要 returns 和来自数据绑定资源的 url 格式你不能直接将 https url 传递给 app:srcUrl
@BindingAdapter("imageUrl")
public static void setImageUrl(ImageView view, String imageUrl) {
Picasso.with(view.getContext())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.into(view); 0));
}
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="prod" type="com.webkul.example.Product"/>
</data>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
app:imageUrl="@{prod.img_url}"/>
</layout>
您需要用单引号和花括号将字符串括起来,例如 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" />
我为加载图像 url 写了一个自定义属性,如下所示:
@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`}"
我认为你需要 returns 和来自数据绑定资源的 url 格式你不能直接将 https url 传递给 app:srcUrl
@BindingAdapter("imageUrl")
public static void setImageUrl(ImageView view, String imageUrl) {
Picasso.with(view.getContext())
.load(imageUrl)
.placeholder(R.drawable.placeholder)
.into(view); 0));
}
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="prod" type="com.webkul.example.Product"/>
</data>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
app:imageUrl="@{prod.img_url}"/>
</layout>
您需要用单引号和花括号将字符串括起来,例如 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" />