android自定义带下划线EditText

最近做项目,需要用到带下划线的EditText,通过学习Android提供的示例Notepad,对其进行小小的改动,解决文字压线的问题,但是光标压线的问题没有解决,希望以后能够解决,效果和代码如下:
效果图:

代码:
public class UnderlineEditText extends EditText {
	private static final String TAG = "UnderlineEditText";
	private Paint mPaint;
	private Rect mRect;
	private float mult = 1.5f;
	private float add = 2.0f;

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

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

	private void init() {
		mRect = new Rect();
		mPaint = new Paint();
		mPaint.setStyle(Paint.Style.STROKE);
		mPaint.setColor(Color.GRAY);
		mPaint.setAntiAlias(true);
		this.setLineSpacing(add, mult);
	}

	@Override
	public void onDraw(Canvas canvas) {
		Log.d(TAG, "func [onDraw]");
		int count = getLineCount();
		for (int i = 0; i < count; i++) {
			getLineBounds(i, mRect);
			int baseline = (i + 1) * getLineHeight();
			canvas.drawLine(mRect.left, baseline, mRect.right, baseline, mPaint);
		}
		super.onDraw(canvas);
	}

}


猜你喜欢

转载自heisedeyueya.iteye.com/blog/1670829