添加跨度时如何阻止 EditText 布局重排?



我正在尝试将数千个跨度批量添加到EditText中的SpannableStringBuilder(通过getText()获得)。

这比我想要的要慢。分析表明,绝大多数时间都花在DynamicLayout.reflow上。有没有办法阻止布局重排,直到我完成添加跨度?

要批量文本重排/布局更改,请使用AppCompatMultiAutoCompleteTextView作为基类,并使用beginBatchEdit()endBatchEdit()将要批处理的代码括起来


public class MyEditText extends AppCompatMultiAutoCompleteTextView {
private void batchUpdateSpans() {
try {
beginBatchEdit();
updateSpans();
} finally {
endBatchEdit();
} 
}
}

AppCompatMultiAutoCompleteTextView使用SpannableBuilder,一个支持批处理的SpannableStringBuilder子类。

相关内容

  • 没有找到相关文章

最新更新