EditText光标位置的改变

时间:2021-01-05 08:56:58

EditText的光标位置的改变

项目中的EditText中的文本在右边,当输入文本再次编辑的时候,光标却显示在文本的左边,无法接着文本的末尾继续编辑,在网上查找一番,看到两行靠谱的代码:

     mEt.requestFocus();
mEt.setSelection(mEt.getText().length());

经过一番测试,发现需要在EditText的触摸监听和点击监听中,同时实现上面的两行代码,才能满足当编辑文本之后,再次编辑之时,光标出现在文本的末尾

    //触摸监听
mEt.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e(TAG,"触摸监听被触发"+System.currentTimeMillis());
mEt.requestFocus();
mEt.setSelection(mEt.getText().length());
return false;
}
});

//点击监听
mEt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG,"点击监听被触发"+System.currentTimeMillis());
mEt.requestFocus();
mEt.setSelection(mEt.getText().length());
}
});

经过测试EditText的相关事件,其执行顺序为:

焦点事件—>触摸事件—>点击事件—>文本改变事件

最后还有一点小问题 , 就是当长按EditText时 , 其光标又会跑到文本的左边(即前面) , 但是松开时又会跑到文本的末尾, 另外有时会弹出粘贴提示框