Android - Wie mache ich alle Zeilen in einem Edittext unterstrichen?

Aus dem Tutorial habe ich das Layout erstellt:

<code>  public static class LinedEditText extends EditText {
        private Rect mRect;
        private Paint mPaint;

        // we need this constructor for LayoutInflater
        public LinedEditText(Context context, AttributeSet attrs) {
            super(context, attrs);

            mRect = new Rect();
            mPaint = new Paint();
            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setColor(0x80000000);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            int count = getLineCount();
            Rect r = mRect;
            Paint paint = mPaint;

            for (int i = 0; i < count; i++) {
                int baseline = getLineBounds(i, r);
                canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
            }

            super.onDraw(canvas);
        }
    }

<view xmlns:android="http://schemas.android.com/apk/res/android"
    class="com.bbbfr.mynotepad.NotepadText$LinedEditText"
    android:id="@+id/note"
    android:background="#ffd6e5"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp"
    android:scrollbars="vertical"
    android:fadingEdge="vertical"
    android:gravity="top"
    android:textSize="22sp"
    android:textColor="#000000"
    android:inputType="textMultiLine"
    android:capitalize="sentences"
/>
</code>

Dadurch wird nur die erste Zeile unterstrichen. Können alle Zeilen unterstrichen werden, auch wenn sich nur eine Zeile im edtittext befindet?

Ich habe versucht, die Schleife zu ändern, z.for (int i = 0; i < 5; i++) aber dann erhalte ich diese Fehlermeldung:

28.04.08: 29.05.093: E / AndroidRuntime (14398): java.lang.IndexOutOfBoundsException: 2, 1 28.04.08: 29.05.093: E / AndroidRuntime (14398): at android.text.PackedIntVector.getValue ( PackedIntVector.java:70) 28.04.08: 29.05.093: E / AndroidRuntime (14398): at android.text.DynamicLayout.getLineTop (DynamicLayout.java:367) 28.04.08: 29.05.093: E / AndroidRuntime ( 14398): at android.text.Layout.getLineBottom (Layout.java:831) 04-28 08: 29: 05.093: E / AndroidRuntime (14398): at android.text.Layout.getLineBounds (Layout.java:437) 04 -28 08: 29: 05.093: E / AndroidRuntime (14398): at android.widget.TextView.getLineBounds (TextView.java:4122) 04-28 08: 29: 05.093: E / AndroidRuntime (14398): at com.bbbfr .mynotepad.NotepadText $ LinedEditText.onDraw (NotepadText.java:56)

zu dieser Zeile:int baseline = getLineBounds(i, r);

Ich habe auch eingestelltandroid:lines="5" in der Ansicht.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage