继承控件,顾名思义就是继承现有的控件来满足自己的需求与扩展。一般除了控件自身的属性外,我们会在onDraw()里进行扩展。
1.继承TextView控件,定义属性。
public class TvView extends TextView {
public TvView(Context context) {
super(context);
}
public TvView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TvView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(getResources().getColor(android.R.color.holo_green_light));
paint.setStyle(Paint.Style.FILL);
Paint mPaint = new Paint();
mPaint.setColor(Color.GREEN );
mPaint.setStyle(Paint.Style.FILL);
//绘制外层矩形
canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint);
//绘制内层矩形
canvas.drawRect(5, 5, getMeasuredWidth() - 5, getMeasuredHeight() - 5, mPaint);
canvas.save();
//绘制文字前平移10像素
canvas.translate(5, 0);
super.onDraw(canvas);
canvas.restore();
}
}
2.在xml中使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<demo.view.cn.viewtest.TvView
android:text="继承"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="100dp"
android:layout_height="100dp" />
</LinearLayout>
3.运行效果
以上只是一个简单的继承控件。大家还可以根据不同的方法实现不同的效果。自动手试试吧。
欢迎点赞,评论~~