一个完整的水平线EditText

时间:2014-06-23 20:27:37

标签: android android-edittext android-canvas

通过这个SO回答Android: Ruled/horizonal lines in Textview以及我正在阅读的书中的一些代码,我想出了这个:

    @Override
    public void onDraw(Canvas canvas){
        // color the paper
        canvas.drawColor(paperColor);

        // draw ruled lines
        int lineCount = getLineCount();
        Rect r = rect;
        for(int i = 0; i < lineCount; i++){
            int baseLine = getLineBounds(i, r);
            canvas.drawLine(r.left, baseLine+1, r.right, baseLine+1, linePaint);
        }

        // draw margin
        canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint);

        // move the text across the margin
        canvas.save();
        canvas.translate(margin, 0);

        // render the text
        super.onDraw(canvas);
        canvas.restore();
    }  

但是,如果我向EditText添加更多行文本,我只会获得格线。这是因为getLineCount()已被使用。基本上,我希望EditText看起来像笔记本中的页面。

需要对代码进行哪些修改?

1 个答案:

答案 0 :(得分:1)

不是使用getLineCount(),也许你可以这样做:

private int getDrawableLineCount() {
   return getMeasuredHeight() % getLineHeight();
}

行高可能需要调整,但这应该让你开始。