Normally, when the view is clicked, the text cursor is set near the place you clicked on.
I try to set it always to the end (past the last character), but it does nothing unless the action is delayed.
The following:
new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus) {
EditText et = (EditText) v;
et.setSelection(et.getText().length());
}
}
});
does not work. Delaying the setSelection
part:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
et.setSelection(et.getText().length());
}
}, 40);
makes it work, but is bad practice.
What better alternatives are there? OnClickListener
and OnTouchListener
(ACTION_DOWN and ACTION_UP both) don't help, either.
No need delay. we need to wait setSelection
or else automatically called done and execute my 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());
}
});
}
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With