edittext 自动跳转到下一个 返回上一个

来源:互联网 发布:2015 库里对火箭 数据 编辑:程序博客网 时间:2024/04/28 21:28
public class EditTextMoreUtils {    private List<EditText> editTextList = new ArrayList<>();    public EditTextMoreUtils(EditText et1, EditText et2, EditText... ets) {        add(et1, et2, ets);    }    public String getText() {        StringBuffer result = new StringBuffer();        for (EditText editText : editTextList) {            result.append(editText.getText().toString());        }        return result.toString();    }    private void add(EditText et1, EditText et2, EditText... ets) {        editTextList.add(et1);        editTextList.add(et2);        editTextList.addAll(Arrays.asList(ets));        for (int i = 0; i < editTextList.size(); i++) {            if (i == 0) {                editTextList.get(i).addTextChangedListener(new NextFocusTextWatcher(                        editTextList.get(i), null, editTextList.get(i + 1)));            } else if (i < editTextList.size() - 1) {                editTextList.get(i).addTextChangedListener(new NextFocusTextWatcher(                        editTextList.get(i), editTextList.get(i - 1), editTextList.get(i + 1)));            } else if (i == editTextList.size() - 1) {                editTextList.get(i).addTextChangedListener(new NextFocusTextWatcher(                        editTextList.get(i), editTextList.get(i - 1), null));            }        }    }    public class NextFocusTextWatcher implements TextWatcher {        private EditText mEt;        private EditText et_l;        private EditText et_n;        private int maxLength = 1;        public void setEtn(EditText et_n) {            this.et_n = et_n;        }        public NextFocusTextWatcher(EditText et, EditText etl, EditText etn) {            this.mEt = et;            this.et_l = etl;            this.et_n = etn;            mEt.setSelection(mEt.getText().length());            this.mEt.setOnKeyListener(new OnKeyListener() {                @Override                public boolean onKey(View v, int keyCode, KeyEvent event) {                    switch (event.getAction()) {                        case KeyEvent.ACTION_DOWN:                            if (keyCode == 67 && mEt.getText().length() == 0 && null != et_l) {                                et_l.setText("");                                et_l.requestFocus();                            }                            break;                    }                    return false;                }            });        }        @Override        public void onTextChanged(CharSequence s, int start, int before, int count) {            if (s.length() == maxLength && null != et_n) {                et_n.requestFocus();            }        }        @Override        public void beforeTextChanged(CharSequence s, int start, int count, int after) {        }        @Override        public void afterTextChanged(Editable s) {        }    }}
0 0
原创粉丝点击