如何将光标位置设置到EditText的末尾?

时间:2019-11-17 11:41:02

标签: java android android-studio

我有一个EditText文本字段。当我单击它时,光标将设置为用户触摸的位置。

我知道将选择内容设置为“编辑文本”末尾的这种方法:

myEditText.setSelection(myEditText.getText().length());

上面的功能有效,但是当用户点击文本框时,它会被覆盖。光标闪烁到编辑文本的末尾,然后捕捉到用户点击的位置。

似乎OnTouch或OnClick在覆盖它之后发生了一些事件。

如何确保当用户单击EditText时,它保持在文件末尾,直到再次单独点击?

2 个答案:

答案 0 :(得分:1)

为此使用onFocusChangeListener,一旦edittext获得用户关注,就触发一条语句:

myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            myEditText.setSelection(myEditText.getText().length());
        }
    }
});

https://developer.android.com/reference/android/view/View.html#setOnFocusChangeListener%28android.view.View.OnFocusChangeListener%29

更新

onTouchListener?我相信这更合适:

myEditText.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(MotionEvent.ACTION_UP == event.getAction()) {
            myEditText.setSelection(myEditText.getText().length());
        }
        return true;
    }
});

另一种选择可能是与侦听器之一一起禁用xml中的可聚焦触摸:

<EditText android:focusableInTouchMode="false" />

答案 1 :(得分:0)

解决方案:我将其放在OnTouch覆盖中,但它可以在任何地方使用

bioEditText.scrollTo(0, bioEditText.getBottom());