If we want the underline, we have to draw the underline by ourselves.
So we define the new class LinedEditText to override onDraw.
public static class LinedEditText extends EditText {
private Paint mPaint;
// we need this constructor for LayoutInflater
public LinedEditText(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}
private void initPaint() {
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(0x80000000);
mPaint.setStrokeWidth(2);
}
@Override
protected void onDraw(Canvas canvas) {
// draw underline on current page
int left = getLeft();
int right = getRight();
int paddingTop = getPaddingTop();
int paddingBottom = getPaddingBottom();
int paddingLeft = getPaddingLeft();
int paddingRight = getPaddingRight();
int height = getHeight();
int lineHeight = getLineHeight();
int count = (height-paddingTop-paddingBottom) / lineHeight;
// total line counts
int linecount= getLineCount();
if (count < linecount)
count = linecount;
for (int i = 0; i < count; i++) {
int baseline = lineHeight * (i+1) + paddingTop;
canvas.drawLine(left+paddingLeft, baseline, right-paddingRight, baseline, mPaint);
}
super.onDraw(canvas);
}
}
and we use the class on layout xml
<view xmlns:android="http://schemas.android.com/apk/res/android"
class="com.example.MyActivity$LinedEditText"
android:id="@+id/edittext"
android:inputType="textMultiLine"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top"
android:textColor="@color/Black"
android:textSize="16sp" />
留言列表