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.