完成自定义属性需要4个步骤,完美解决。
1. 通过 为自定义View添加属性
2. 在xml中为相应的属性声明属性值
3. 在运行时(一般为构造函数)获取属性值
4. 将获取到的属性值应用到View
1、添加自定义属性:
在attrs.xml 文件中,定义 declare-styleable 如下所示
<resources>
<declare-styleable name="BtnBackColor">
<attr name="btnText" format="string"/>
<attr name="btnColor" format="color"/>
</declare-styleable>
</resources>
2、申明属性:local 自定义名,添加资源文件路径;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
3、布局文件中引用
<com.mode.db.li.CarsonView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15sp"
local:btnText="dontdong"
local:btnColor="#ff0000" />
4、自定义文件中,获取属性,设置到View
public CarsonView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
// 获取属性
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.BtnBackColor);
int color = array.getColor(R.styleable.BtnBackColor_btnColor, 0x00ffff);
String dontdong = array.getString(R.styleable.BtnBackColor_btnText);
// 应用属性到对应view
setText(dontdong);
setTextColor(color);
array.recycle(); \\回收资源否则内存泄露
}
|