(76条消息) Android 开发 之 DataBinding自定义属性绑定_启之灵的博客-CSDN博客
一些属性需要自定义绑定逻辑
例子一
xml
<com.example.musicprotectedmvvmf.view.MainTabBarView
isSelected="@{vm.selectedTabId==MainViewConstant.TAB_FIND}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{()->handlers.onClickTab(MainViewConstant.TAB_FIND)}"
android:padding="8dp"
app:tabIcon="@drawable/ic_main_tab_podcast"
app:tabText="发现" />
代码
@BindingAdapter("isSelected")
public static void setSelected(View view, boolean isSelected) {
view.setSelected(isSelected);
}
参数类型非常重要
第一个参数用于确定与特性关联的视图类型
第二个参数用于确定在给定特性的绑定表达式中接受的类型。
例子二:
xml
<ImageView
imgCorner="@{8}"
imgUrl="@{item.pic}"
android:layout_width="match_parent"
android:layout_height="match_parent" />
代码
@BindingAdapter(value = {"imgUrl","imgCorner"},requireAll = false)
public static void setImageUrl(ImageView view, Object url, int imgCorner) {
RequestBuilder<Drawable> request = Glide.with(view).load(url);
if (imgCorner > 0) {
request = request.transform(new CenterCrop(), new RoundedCorners(AutoSizeUtils.dp2px(view.getContext(), imgCorner)));
}else {
request = request.transform(new CenterCrop());
}
request.into(view);
}