我想在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