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.在布局文件中使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.example.storetest.LinedEditText
android:id="@+id/et1"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:gravity="top"
android:inputType="textMultiLine" />
</LinearLayout>
复制代码
注意:使用EditText控件时,不再使用EditText前缀,而是重写之后完整路径的包名+类名(如com.example.storetest.LinedEditText)。
3.在使用时与正常调用EditText时一致