在开发过程中,在我们会在RecyclerView中使用到EditText,由于View复用机制,如果不好好处理EditText,将会出现一些问题。
其中一个最常见的问题就是输入框的焦点问题,经过多方面尝试,觉得最靠谱的方式就是自定义一个EditText。
通过监听光标移动事件,重写onSelectionChanged(int selStart,int selEnd),然后设置setSelection(int index),使光标始终保持在最后面。
public class EndEditTextextends AppCompatEditText {
public EndEditText(Context context) {
super(context);
}
public EndEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EndEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 重写nSelectionChanged
*
* @param selStart
* @param selEnd
*/
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
//防止不能多选
if (selStart == selEnd) {
//让光标始终在内容最后面
setSelection(getText().length());
}
}
}