最近做项目,需要用到带下划线的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); }}