第一步:先在styles.xml文件聲明好自定義view要用到的自定義屬性
示例代碼如下:聲明default_size
<declare-styleable name="SquareView">
<!--聲明我們的屬性俄认,名稱(chēng)為default_size,取值類(lèi)型為尺寸類(lèi)型(dp,px等)-->
<attr name="default_size" format="dimension"></attr>
</declare-styleable>
注:name = SquareView 標(biāo)識(shí)聲明的屬性的歸類(lèi)
第二步:在xml視圖中使用自定義屬性
示例代碼如下:使用default_size
<view.SquareView
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimary"
app:default_size="75dp"/>
第三步:在自定義view的類(lèi)里面獲取聲明的專(zhuān)用屬性的值
示例代碼如下:取出default_size的值
public SquareView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
Log.i(TAG, "在第二個(gè)構(gòu)造函數(shù)");
/** 獲取自定義屬性值 */
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.SquareView);
int customValue = typedArray.getDimensionPixelSize(R.styleable.SquareView_default_size, 200);
String logContent = String.format("自定義view默認(rèn)尺寸大忻纱А:%d px",customValue);
Log.d(TAG, logContent);
}
注:獲取專(zhuān)用屬性的值,用到了Context類(lèi)的obtainStyledAttributes()方法,返回的信息被保存在一個(gè)TypedArray的類(lèi)中罩息。然后調(diào)用TypedArray中相應(yīng)的方法取出自定義屬性的值