• android -------- Data Binding的使用 ( 六) 自定义属性


    今天来说说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/

  • 相关阅读:
    Django: 获取头信息
    好用工具:火狐浏览器的境内境外版本区分
    Django: request.GET.get()
    es6: 展开运算符
    Vue: 配置axios基准路径并使用
    js: 获取Blob的值
    ApiPost: Error:ESOCKETTIMEDOUT
    Vue错误:Cannot read properties of undefined (reading '$router')
    git报错:error: Your local changes to the following files would be overwritten by checkout:
    Django: request.query_params取值
  • 原文地址:https://www.cnblogs.com/zhangqie/p/9636754.html
Copyright © 2020-2023  润新知