1

ノートエディタを作りたいです。EditTextwith 行があります。これが私のコードです:

LinedEditText.java

public class LinedEditText extends EditText {


    private Rect mRect;
    private Paint mPaint;

    public LinedEditText(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        mRect = new Rect();
        mPaint = new Paint();
        mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        mPaint.setColor(Color.BLUE); //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();

        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);
    }

TextEditorActivity.java

    public class TextEditorActivity extends Activity {

    private LinedEditText text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.text=new LinedEditText(getApplicationContext());
        this.setContentView(text);
    }

}

そして結果:

結果 http://bekirmavus.com/k-resimler/image/android/device-2012-07-17-222950.png

私はどんな間違いをしていますか?

ありがとう...

4

1 に答える 1

3

カーソルの位置から下に線が引かれています。Gravityを使用して、カーソルのデフォルト位置を垂直方向の中央から左上に移動するだけです。

text.setGravity(Gravity.NO_GRAVITY);

または、すべてのLinedEditTextにデフォルトで設定します。

public LinedEditTexts(Context context) {
    super(context);
    setGravity(Gravity.NO_GRAVITY); // or Gravity.TOP | Gravity.LEFT
    ...
}
于 2012-07-17T20:02:23.470 に答える