android如何将EditText光标设置为其文本的末尾[复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android如何将EditText光标设置为其文本的末尾[复制]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

用户必须输入他的手机号码,手机号码必须是10个号码,我用TextWatcher这样做,就像这样

et_mobile.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
        if (et_mobile.getText().toString().length() > 10) {
            et_mobile.setText(et_mobile.getText().toString()
                    .subSequence(0, 10));
            tv_mobileError.setText("Just 10 Number");
        }else{
            tv_mobileError.setText("*");
        }
    }
});

但问题是当用户输入第11个数字时,edittext的光标从文本的开头开始,我希望它仍然在最后,怎么样?

答案

你有两个选择,两个都应该工作:

一个)

editText.setText("Your text");
editText.setSelection(editText.getText().length());

b)

editText.setText("");    
editText.append("Your text");
另一答案
/**
 * Set pointer to end of text in edittext when user clicks Next on KeyBoard.
 */
View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {
            ((EditText) view).setSelection(((EditText) view).getText().length());
        }
    }
};

mEditFirstName.setOnFocusChangeListener(onFocusChangeListener);
mEditLastName.setOnFocusChangeListener(onFocusChangeListener);

它对我有用!

另一答案

虽然jenzz anwser适用于最简单的情况。如果在编辑文本之前移动光标则不会,因为只要键入第二个字母,它就会移动到EditText的末尾。

喜欢使用此解决方案:

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) 
            {
                ...
                int position = et_mobile.getSelectionStart();
                et_mobile.setText(f(s));
                et_mobile.setSelection(position);
                ...
            }

以上是关于android如何将EditText光标设置为其文本的末尾[复制]的主要内容,如果未能解决你的问题,请参考以下文章

Android将光标从一个EditText移动到另一个EditText?

Android EidtText 光标的使用和设置

Android 设置EditText的光标样式

Android edittext - settextmethod 光标问题

android EditText设置光标边框和图标

android edittext输入完成后让光标消失