EditText 在设置添加文本内容时候,光标一般都在文本开头,如何一开始自动在文本末尾呢?
方式一:
//关联界面上的editText和主程序mainactivity
urlInput = (EditText) findViewById(R.id.url_input);
//通过gettext获取当前字符串长度,并用setselection把光秒移到这个长度位置(末尾)
urlInput.setSelection(urlInput.getText().length());
方式二:
监听光标移动事件,重写 onSelectionChanged(int selStart, int selEnd)即可,自定义一个EditText, 一劳永逸.
package com.steampy.app.widget.edittext;
import android.content.Context;
import android.util.AttributeSet;
/**
* 用于光标总是文本最后
*/
public class CustomEditText extends androidx.appcompat.widget.AppCompatEditText {
public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomEditText(Context context) {
super(context);
}
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
//保证光标始终在最后面
if(selStart==selEnd){//防止不能多选
setSelection(getText().length());
}
}
}
网友评论