1

ここに画像の説明を入力メモ帳を作成していて、複数の水平線を含むテキストを編集したいと考えています。私がいくつか行ったように、次をクリックするか、次の行に入力すると、行が表示されます。その線がすでにそこにあることを望みます。android:lines="5" でlayourを使用しているとき。私が添付したように画像を表示しています。

あわせてご提案ください。ありがとうここに画像の説明を入力

EDITED:私のEditTextはこのように表示されています!!!! 上の巨大なギャップ。何をすべきか提案してください。

4

3 に答える 3

3

ここに画像の説明を入力
これは、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);
    }
}

詳細については、このリンクを参照してください。

于 2013-01-16T06:47:25.573 に答える
2

XML android:gravity="top|left" にこの行を簡単に追加します

于 2013-10-04T14:46:04.353 に答える
0

ここで、私のコードはデフォルトで 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);
    }
}
于 2013-11-21T06:43:56.290 に答える