Android自定义属性的使用
2012-02-22 09:23
351 查看
在android中我们习惯了在XML布局文件中,进行控件属性的设置,由于控件默认提供的属性数量有限,为了增加属性我们可以给控件添加一些自定义的属性,下面来讲一下为控件添加自定义属性的几个步骤。
1>在res/values文件下添加一个attrs.xml文件(没有的话)如下:
2>在相关的XML布局文件中使用自定义的属性:
3>在代码中获取自定义的属性值:
好了这就完成了自定义属性的定义和使用。
1>在res/values文件下添加一个attrs.xml文件(没有的话)如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <!--添加了一个ImageTextButton的属性集 --> <declare-styleable name="ImageTextButton"> <attr format="reference" name="iconImage" /> <attr format="reference" name="bkImage" /> <attr format="integer" name="borderLeft" /> <attr format="integer" name="borderRight" /> <attr format="integer" name="borderTop" /> <attr format="integer" name="borderBottom" /> <attr format="integer" name="buttonstate" /> <attr name="iconLocation"> <enum name="center" value="0" /> <enum name="left" value="1" /> <enum name="right" value="2" /> </attr> </declare-styleable> </resources>
2>在相关的XML布局文件中使用自定义的属性:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:mux="http://schemas.android.com/apk/res/com.shareboard" android:layout_width="530dp" android:layout_height="320dp" android:background="@color/dlgBg" android:orientation="vertical" > <!--com.shareboard 为工程所在包 --> <com.shareboard.uicontrols.ImageTextButton android:id="@+id/btnCancel" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="20dp" mux:bkImage="@drawable/cell_bkgnd" mux:buttonstate="2" android:text="@string/btn_cancel" android:textColor="@color/btnText" android:textSize="@dimen/btnText" /> <com.shareboard.uicontrols.ImageTextButton android:id="@+id/btnDone" android:layout_width="100sp" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="@dimen/btnMargin" mux:bkImage="@drawable/cell_bkgnd" mux:buttonstate="2" android:text="@string/btn_done" android:textColor="@color/btnText" android:textSize="@dimen/btnText" /> </LinearLayout>
3>在代码中获取自定义的属性值:
public final class ImageTextButton extends Button { private int mIconId; private int mBkimgId; private int mBorderLeft = 10; private int mBorderRight = 10; private int mBorderTop = 10; private int mBorderBottom = 10; private int mnButtonState = 4; private int mIconLocation = 0; private boolean mbChecked = false; public ImageTextButton(Context context) { super(context); setClickable(true); } public ImageTextButton(Context context, AttributeSet attrs) { super(context, attrs); readAttrs(context, attrs); setClickable(true); } private void readAttrs(Context context, AttributeSet attrs) { TypedArray types = context.obtainStyledAttributes(attrs, R.styleable.ImageTextButton); final int count = types.getIndexCount(); for (int i = 0; i < count; ++i) { int attr = types.getIndex(i); switch (attr) { case R.styleable.ImageTextButton_iconImage: mIconId = types.getResourceId(attr, 0); break; case R.styleable.ImageTextButton_bkImage: mBkimgId = types.getResourceId(attr, 0); break; case R.styleable.ImageTextButton_borderLeft: mBorderLeft = types.getInteger(attr, 10); break; case R.styleable.ImageTextButton_borderRight: mBorderRight = types.getInteger(attr, 10); break; case R.styleable.ImageTextButton_borderTop: mBorderTop = types.getInteger(attr, 10); break; case R.styleable.ImageTextButton_borderBottom: mBorderBottom = types.getInteger(attr, 10); break; case R.styleable.ImageTextButton_iconLocation: mIconLocation = types.getInteger(attr, 0); break; case R.styleable.ImageTextButton_buttonstate: mnButtonState = types.getInteger(attr, 4); break; } } types.recycle(); } }
好了这就完成了自定义属性的定义和使用。
相关文章推荐
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时TypedArray的使用方法
- android studio自定义属性使用
- 在android style文件中使用自定义属性
- 如何在android style文件中使用自定义属性
- Android自定义属性时TypedArray的使用方法
- Android自定义属性时typedArray的使用方法
- Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用
- Android使用属性动画如何自定义倒计时控件详解
- Android自定义属性时TypedArray的使用方法
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- Android之Merge及自定义属性attrs.xml使用 推荐
- android 自定义属性使用
- android中如何使用自定义view,自定义控件属性,及动态自定义控件
- Android 自定义View时使用TypedArray配置样式属性详细介绍
- Android 使用自定义组件和自定义属性
- 在android style文件中使用自定义属性
- android自定义属性的使用
- Android高手之路之Android中的自定义属性attr.xml、TypedArray的使用