メモ帳を作成していて、複数の水平線を含むテキストを編集したいと考えています。私がいくつか行ったように、次をクリックするか、次の行に入力すると、行が表示されます。その線がすでにそこにあることを望みます。android:lines="5" でlayourを使用しているとき。私が添付したように画像を表示しています。
あわせてご提案ください。ありがとう
EDITED:私のEditTextはこのように表示されています!!!! 上の巨大なギャップ。何をすべきか提案してください。
メモ帳を作成していて、複数の水平線を含むテキストを編集したいと考えています。私がいくつか行ったように、次をクリックするか、次の行に入力すると、行が表示されます。その線がすでにそこにあることを望みます。android:lines="5" でlayourを使用しているとき。私が添付したように画像を表示しています。
あわせてご提案ください。ありがとう
EDITED:私のEditTextはこのように表示されています!!!! 上の巨大なギャップ。何をすべきか提案してください。
これは、Google のノート エディターに基づいたコードです。出力は画像に表示されます。Enter キーを押すと、新しい行が追加されます。
public 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.FILL_AND_STROKE);
mPaint.setColor(R.color.edit_note_line); //SET YOUR OWN COLOR HERE
}
@Override
protected void onDraw(Canvas canvas) {
//int count = getLineCount();
int height = getHeight();
int line_height = getLineHeight();
int count = height / line_height;
if (getLineCount() > count)
count = getLineCount();//for long text with scrolling
Rect r = mRect;
Paint paint = mPaint;
int baseline = getLineBounds(0, r);//first line
for (int i = 0; i < count; i++) {
canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
baseline += getLineHeight();//next line
}
super.onDraw(canvas);
}
}
詳細については、このリンクを参照してください。
XML android:gravity="top|left" にこの行を簡単に追加します
ここで、私のコードはデフォルトで 15 行を描画し、Enter キーを押すとさらに多くの行を取得できます:-
package com.wysiwyg.main;
import android.content.Context;
import android.database.Cursor;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.EditText;
public class LineEditText extends EditText {
private Rect mRect;
private Paint mPaint;
// we need this constructor for LayoutInflater
public LineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
mRect = new Rect();
mPaint = new Paint();
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setColor(Color.BLUE); //SET YOUR OWN COLOR HERE
setMinLines(15);
}
@Override
protected void onDraw(Canvas canvas) {
int height = getHeight();
int line_height = getLineHeight();
int count = height / line_height;
if(getLineCount() > count){
count = getLineCount();
}
Rect r = mRect;
Paint paint = mPaint;
int baseline = getLineBounds(0, r);
for (int i = 0; i < count; i++) {
canvas.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
baseline += getLineHeight();//next line
}
// Finishes up by calling the parent method
super.onDraw(canvas);
}
}