第一步:先在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中相应的方法取出自定义属性的值