android -------- Data Binding的使用 ( 六) 自定義屬性
阿新 • • 發佈:2018-09-22
fan from adapt rim wrap width void 我只 ram
今天來說說DataBinding在自定義屬性的使用
默認的android命名空間下,我們會發現並不是所有的屬性都能直接通過data binding進行設置,比如margin,padding,還有自定義View的各種屬性。
默認資源使用
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <!--通過自定義的data來賦值,data的類型定位string--><variable name="data" type="String" /> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_demo8_add"android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@{data}" /> </LinearLayout> </layout>
添加值:
demo8Binding.setData("自定義屬性-添加");
屬性:
@BindingAdapter("android:paddingLeft")public static void setPaddingLeft(View view, int padding) { view.setPadding(padding, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()); }
圖片自定義屬性:
/** * 1.加載圖片,無需手動調用此方法 * 2.使用@BindingAdapter註解設置自定義屬性的名稱,imageUrl就是屬性的名稱, * 當ImageView中使用imageUrl屬性時,會自動調用loadImage方法, * * @param imageView ImageView * @param url 圖片地址 */ @BindingAdapter({"imageUrl"}) public static void loadImage(ImageView imageView, String url) { Glide.with(imageView.getContext()).load(url) .placeholder(R.mipmap.ic_launcher) .error(R.mipmap.ic_launcher) .into(imageView); }
添加屬性和數據:
<!-- 當imageUrl屬性存在時,會自動調用ImageHelper的loadImage方法 --> <ImageView android:layout_width="120dp" android:layout_height="120dp" android:scaleType="centerCrop" app:imageUrl="@{userImg.picUrl}" android:paddingLeft="@{15}" />
我只是簡單的舉幾個例子,還可以定義其他的屬性。
參考文檔:http://blog.zhaiyifan.cn/2016/07/06/android-new-project-from-0-p8/
android -------- Data Binding的使用 ( 六) 自定義屬性