项目中的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时 , 其光标又会跑到文本的左边(即前面) , 但是松开时又会跑到文本的末尾, 另外有时会弹出粘贴提示框