仅绘制edittext的可见区域

时间:2013-12-06 05:18:08

标签: android android-edittext

我有一个自定义的edittext,可能包含超过1000行的大型输入文本。当edittext的内容非常大时,滚动开始变慢。这是由于我的覆盖绘制方法中的循环。此方法使用getlinecount方法并对edittext的所有行执行绘制。只能绘制edittext的可见区域,从而降低循环复杂度?

public class LinedEditText extends EditText {
    private Rect mRect;
    public LinedEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        int height = getHeight();
        int lineHeight = getLineHeight();
        int count = height / lineHeight;
        if (getLineCount() > count)
            count = getLineCount();

        int baseline = getLineBounds(0, mRect);//first line

        for (int i = 0; i < count; i++) {
            //some operation for each line.
        }
        super.onDraw(canvas);
    }
}

1 个答案:

答案 0 :(得分:2)

我使用getScrollX()解决了它,因此找到了唯一的可见区域。