android 自定属性的使用

来源:互联网 发布:淘宝美工工具 编辑:程序博客网 时间:2024/05/16 17:31

declare-styleable是给自定义控件添加自定义属性用的

1.首先,先写attrs.xml

复制代码
<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="TestAttr">        <attr name="name" format="reference" />        <attr name="age">            <flag name="child" value="10" />            <flag name="young" value="18" />            <flag name="oldman" value="60" />        </attr>        <attr name="textSize" format="dimension" />       </declare-styleable></resources>
复制代码
reference指的是是从string.xml引用过来flag是自己定义的,类似于 android:gravity="top"
dimension 指的是是从dimension.xml里引用过来的内容.注意,这里如果是dp那就会做像素转换
2.在布局文件里的写法
复制代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:attrstest="http://schemas.android.com/apk/res/com.arlos.attrstest"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >s    <com.arlos.attrstest.MyTestView        android:id="@+id/tvTest"        android:layout_width="fill_parent"        android:layout_height="wrap_content"         attrstest:name="@string/myname"          android:gravity="top"         attrstest:age="young"         attrstest:textSize="@dimen/aa"        android:text="@string/hello" /></LinearLayout>
复制代码

    2.1 先引用这个dtd

xmlns:attrstest="http://schemas.android.com/apk/res/com.arlos.attrstest"
attrstest是随便写的.后面的包名是你所在的项目的根包.也就是在manifest里的com.arlos.attrstest 2.2 在自定义的控件里写属性3. 最后在控件的构造方法里取得这些值
复制代码
public class MyTestView extends TextView {    public MyTestView(Context context, AttributeSet attrs) {        super(context, attrs);        TypedArray tArray = context.obtainStyledAttributes(attrs,                R.styleable.TestAttr);        String name = tArray.getString(R.styleable.TestAttr_name);        System.out.println("name = " + name);        int age = tArray.getInt(R.styleable.TestAttr_age, 200);        System.out.println("age = " + age);         float demin = tArray.getDimension(R.styleable.TestAttr_textSize,0);         System.out.println("demin = " + demin);        tArray.recycle();    }}
复制代码

0 0
原创粉丝点击