android 自定义属性
2015-09-04 21:26
507 查看
在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中的进程机制(Binder)
- 如何使用Android命令
- Android Api Demos登顶之路(五十六)Service Remote Service
- @+id/android:list"的写法
- Android实战简易教程-第五十三枪(通过实现OnScrollListener接口实现上拉加载更多功能)
- android中的一些小技巧
- 【Android进阶】-Android ORM数据库框架 ActiveAndroid入门
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android核心基础-8.Android四大组件之Activity-3.生命周期、横竖屏切换、启动模式、进程管理
- 【转】android如何添加权限
- Android Service与Activity之间通信的几种方式
- When executing step "Deploy to Android device"
- Android下得到APK包含信息
- android定位布局
- Android的javascript扩展
- (Android Studio)ActionBar's Theme/Style [ActionBar主题风格修改]
- android studio开发Activity切换动画以及ButterKnife注解简单应用
- Android Studio最新版本(1.3)JNI开发流程总结
- Android一些设计原则杂项
- Android test---SL4A