本文共 1751 字,大约阅读时间需要 5 分钟。
自定义一个类,继承View
继承View还是哪个类,取决于你要实现一个什么样的控件
如果你要实现的是一个线性布局的组合控件,就可以继承LinearLayout
如果你要实现的是一个布局复杂的组合控件,就可以继承RelativeLayout
具体根据实际情况
这里我要实现一个Android端的显示验证码的控件,我只继承View
package ……;import ……/** * Created by kongqw on 2015/10/23. */public class CheckView extends View { …… public CheckView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; …… } public void onDraw(Canvas canvas) { // 画界面 …… } ……}
类似的,如果你是继承了RelativeLayout,大概可以这样实现
package ……;import ……/** * Created by kongqw on 2015/7/10. */public class KTop extends RelativeLayout { private …… …… public KTop(Context context) { super(context); initView(); } public KTop(Context context, AttributeSet attrs) { super(context, attrs); initView(); } public KTop(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); } /** * 初始化界面 */ private void initView() { view = View.inflate(getContext(), R.layout.k_top, this); // 控件背景 mTitleView = (RelativeLayout) view.findViewById(R.id.title_view); // 只举一个例子,这里可以获取的布局里的控件 …… } // 做一些其他操作的处理,例如控件的点击事件处理等 ……}
在布局文件中的使用
在values文件夹下创建attrs.xml文件
name是自定义属性的名称 format是自定义属性的类型,有如下类型,就不一一介绍了
代码
在使用自定义控件的xml文件里引入命名空间
xmlns:kongqw="http://schemas.android.com/apk/res-auto"
自定义属性的使用
kongqw:point_num="5"
示例
…… ……