版权声明:本文为博主原创文章,未经博主允许不得转载。 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>