自定义view,获取xml视图中自定义的属性的值

第一步:先在styles.xml文件声明好自定义view要用到的自定义属性

示例代码如下:声明default_size

<declare-styleable name="SquareView">
        <!--声明我们的属性,名称为default_size,取值类型为尺寸类型(dp,px等)-->
        <attr name="default_size" format="dimension"></attr>
    </declare-styleable>

注:name = SquareView 标识声明的属性的归类

第二步:在xml视图中使用自定义属性

示例代码如下:使用default_size

    <view.SquareView
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:background="@color/colorPrimary"
                app:default_size="75dp"/>

第三步:在自定义view的类里面获取声明的专用属性的值

示例代码如下:取出default_size的值

public SquareView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        Log.i(TAG, "在第二个构造函数");

        /** 获取自定义属性值 */
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.SquareView);
        int customValue = typedArray.getDimensionPixelSize(R.styleable.SquareView_default_size, 200);
        String logContent = String.format("自定义view默认尺寸大小:%d px",customValue);
        Log.d(TAG, logContent);
    }

注:获取专用属性的值,用到了Context类的obtainStyledAttributes()方法,返回的信息被保存在一个TypedArray的类中。然后调用TypedArray中相应的方法取出自定义属性的值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容