自定义属性多种format的取值方法

也许火星了

在自定义控件时有时会支持多种类型format,那么我们要怎么取值呢?

有什么方法能判断此时调用TypedArray#getFloat还是TypedArray#getDimensionPixelOffset吗?因为在xml中传入的类型我们并不知道,贸然取值程序会报错,下面贴上正确姿势:

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.CompatTextView);

TypedValue value = new TypedValue();
boolean has = array.getValue(R.styleable.CompatTextView_ctv_drawableWidth, value);
if (has) {
    if (value.type == TypedValue.TYPE_FLOAT) {
        //浮点类型

    } else if (value.type == TypedValue.TYPE_DIMENSION) {
        //Dimen类型
    }
} else {
    //未传入
}

array.recycle();

说:“必有童女怀孕生子;人要称他的名为以马内利。”(以马内利翻出来就是“ 神与我们同在”。) (马太福音 1:23 和合本)

你可能感兴趣的:(自定义属性多种format的取值方法)