1. 重写EditText
public class LinedEditText extends EditText { private Paint linePaint; private float margin; private int paperColor; public LinedEditText(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); this.linePaint = new Paint(); } protected void onDraw(Canvas paramCanvas) { paramCanvas.drawColor(this.paperColor); int i = getLineCount(); int j = getHeight(); int k = getLineHeight(); int m = 1 + j / k; if (i < m) i = m; int n = getCompoundPaddingTop(); paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint); for (int i2 = 0;; i2++) { if (i2 >= i) { setPadding(10 + (int) this.margin, 0, 0, 0); super.onDraw(paramCanvas); paramCanvas.restore(); return; } n += k; paramCanvas.drawLine(0.0F, n, getRight(), n, this.linePaint); paramCanvas.save(); } } }
这段代码,并不复杂没有加注释,学过Java的同学应该不会吃力。
2.在布局文件中使用
注意:使用EditText控件时,不再使用EditText前缀,而是重写之后完整路径的包名+类名(如com.example.storetest.LinedEditText)。
3.在使用时与正常调用EditText时一致。