我有一个自定义的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);
}
}
答案 0 :(得分:2)
我使用getScrollX()解决了它,因此找到了唯一的可见区域。