通常,单击视图时,文本光标会设置在您单击的位置附近 我尝试将它始终设置到最后(超过最后一个字符),但除非操作被延迟,否则它什么都不做 以下内容:
new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
EditText et = (EditText) v;
et.setSelection(et.getText().length());
}
}
});
不起作用。延迟setSelection
部分:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
et.setSelection(et.getText().length());
}
}, 40);
让它起作用,但这是不好的做法。
有哪些更好的选择? OnClickListener
和OnTouchListener
(ACTION_DOWN和ACTION_UP)也没有帮助。
答案 0 :(得分:5)
无需延迟。我们需要等待setSelection
或者自动调用已完成并执行我的setSelection
。
new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
final EditText et = (EditText) v;
et.post(new Runnable() {
@Override
public void run() {
et.setSelection(et.getText().length());
}
});
}
}
});
答案 1 :(得分:0)
您应该在setSelection()
的{{1}}内致电afterTextChanged()
。