自定义EditText ,实现一个字一个格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_29060967/article/details/52033075
<span style="font-size:18px;">1.自定义EditText ,实现一个字一个格
</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">package com.bjhrk.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.EditText;

/**
 * Created by user on 2016/7/4.
 */
public class MyEdittext extends EditText {

    private Paint rectPaint;

    public MyEdittext(Context context) {
        super(context);
        init();
    }

    public MyEdittext(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEdittext(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        rectPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        rectPaint.setStyle(Paint.Style.STROKE);
        rectPaint.setStrokeWidth(5);
        rectPaint.setColor(Color.BLACK);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        //super.onDraw(canvas);
        Paint textPaint = getPaint();
        textPaint.setTextAlign(Paint.Align.CENTER);


        /**
         * 绘制框
         */
        int width = getWidth();
        int height = getHeight();
        canvas.drawRect(0,0,width,height,rectPaint);
        int sigleWidth = width/6;
        int x = sigleWidth;
        for (int i = 0;i < 5;i++){
            canvas.drawLine(x,0,x,height,rectPaint);
            x += sigleWidth;
        }

        /**
         * 绘制文字
         */
        String text = getText().toString();
        if(text == null || "".equals(text)){
            return;
        }
        //计算出baseLine位置
        Paint.FontMetricsInt fm = textPaint.getFontMetricsInt();
        int baseLineY = height/2 + (fm.bottom - fm.top)/2 - fm.bottom;

        char[] chars = text.toCharArray();
        int x1 = sigleWidth/2;
        for (int i = 0;i<chars.length;i++){
            String temp = String.valueOf(chars[i]);
            canvas.drawText(temp,x1,baseLineY,textPaint);
            x1 += sigleWidth;
        }

    }
}
</span>

猜你喜欢

转载自blog.csdn.net/sinat_29060967/article/details/52033075