我想在EditText
中显示一些文本,并在文本显示后立即做一些工作。我有下面的代码在我onCreate()
方法:Android:如何在渲染setText()后立即执行回调
this.editor.setText(text, TextView.BufferType.EDITABLE);
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
// Work that needs to be done right after the text is displayed
}
}, 1000);
该工程确定,但我想setText()
渲染和工作是done--一个1秒的延迟是不可接受的延迟减到最小。但是,如果我将延迟更改为0ms或1ms,则工作在文本呈现之前完成。
我可以保持打字号码寻找完美的延迟时间,将执行我的代码文本被渲染刚过,但似乎非常繁琐/不精确。有没有更好的方式告诉Android在发生这种情况后立即执行回调?谢谢。
编辑:以下是我尝试过的两件事情没有奏效。对于奖励积分,如果你能向我解释为什么这些不起作用,这将是非常有帮助的。
使用Handler.post
new Handler(Looper.getMainLooper()).post(r)
也运行r
文本渲染完成之前。我以为setText
将渲染代码添加到队列中,所以不应该在post(r)
之后调用那个渲染代码后添加r
?
使用View.post
this.editor.post(r)
也不能工作,文本渲染之前r
仍称。
为什么你没有使用TextWatcher ??? –
@hamid_c不知道,但我认为在UI更新之前运行,不是吗? –
确切地说,'afterTextChanged(...)'会为你解决问题。 – Wizard