EditText.setSelection(结束)没有效果?

时间:2014-05-18 07:17:29

标签: android android-layout

我使用以下代码在customEditText(cursor)的end处设置EditText,但它不起作用。

customEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                 if (hasFocus) {
                    String customEditTextText = customEditText.getText().toString();
                    int selection = customEditTextText.length();
                    customEditText.setSelection(selection);
                }
            }
});

有人有任何想法吗?

7 个答案:

答案 0 :(得分:7)

我在AlertDialog中遇到了与EditText相同的问题。我的解决方案是:

    mEditText.post(new Runnable() {
        @Override
        public void run() {
            mEditText.setSelection(mEditText.length());
        }
    });

答案 1 :(得分:2)

这对我有用

mEditText.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mEditText.setSelection(mEditText.getText().length());
                    }
                }, 50);

不知道原因,但需要使用postDelayed才能使其正常运行。 只是post无效

答案 2 :(得分:1)

为我工作:

editText.requestFocus();
editText.setSelection(editText.getText().length());

答案 3 :(得分:0)

试试这个

customEditText.setSelection(customEditText.getText().length()-1);

答案 4 :(得分:0)

试试这个

customEditText.setSelection(customEditText.getText().length());

设置选择时无需将其转换为字符串...

答案 5 :(得分:0)

尝试一下。...

editText.requestFocus();

注意:它会自动将光标设置到edittext的最后一个位置。

答案 6 :(得分:0)

要打开setSelection才能工作软键盘。

if(binding.edtListName.requestFocus()) {
            DataManager.showKeyboard(binding.edtListName,context);

        }

DataManager类:

public static void showKeyboard(EditText editText, Context context){
        editText.requestFocus();
        editText.postDelayed(new Runnable(){
                                 @Override public void run(){
                                     InputMethodManager keyboard=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
                                     keyboard.showSoftInput(editText,0);

                                     if (editText.getText().toString().length() > 0 ) {

                                         editText.setSelection(0,editText.getText().toString().length());
                                     }
                                 }
                             }
                ,400);
    }