拓展TextView

自定义View可以通过拓展现有控件

原生TextView通过onDraw()方法绘制要显示的文字,那么继承TextView不重写onDraw()方法,则不会修改TextView任何效果

系统源码

@Override

public void onDraw(Canvas canvas){

  super.onDraw(canvas);

}

那么我们就可以在super.onDraw(canvas);也就是原生的方法前或者方法后进行自己的逻辑

@Override

public void onDraw(Canvas canvas){
      // TODO 
  super.onDraw(canvas);
      // TODO  
}

 

示例

使用到画布状态保存,获取控件的宽高

public class MyTextView extends TextView{


    private Paint mPaint1;
    private Paint mPaint2;

    public MyTextView(Context context) {
        super(context);
        initView();
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }

    private void initView(){
        mPaint1 = new Paint();
        mPaint1.setColor(getResources().getColor(android.R.color.holo_blue_light));
        mPaint1.setStyle(Paint.Style.FILL);
        mPaint2 = new Paint();
        mPaint2.setColor(Color.YELLOW);
        mPaint2.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint1);
        canvas.drawRect(10,10,getMeasuredWidth()-10,getMeasuredHeight()-10,mPaint2);
        canvas.save();
        // 文字x轴平移10像素
        canvas.translate(10, 0);
        // 父类绘制
        super.onDraw(canvas);
        canvas.restore();
    }
}

  

  

  

 

posted @ 2015-10-15 21:12  轻云沉峰  阅读(136)  评论(0)    收藏  举报