开发者

Android: select all text on focus on EditField

开发者 https://www.devze.com 2023-03-13 15:52 出处:网络
I\'m trying to get Android to select all the text in an EditText field when it gets the focus. I\'m using this attribute in the layout (on both fields):

I'm trying to get Android to select all the text in an EditText field when it gets the focus. I'm using this attribute in the layout (on both fields):

android:selectAllOnFocus="true"

I'm not sure if this is relevant, but to get the cursor to the first editable field (there's also a disabled field before it), I'm using the following commands:

quizStartNum.setFocusable(true);
quizStartNum.requestFocus();

But,开发者_运维问答 while the cursor does move to the desired field when the layout is first displayed, the text doesn't get highlighted; instead the cursor ends up to the left of the text, the default behavior. If I move to the second field by touching it, all the text is selected as desired. Then, if I move back to the first field, again by touching it, the text is also completely selected. I would like to have the behavior right from the start. Is there a way to do this?


If android:selectAllOnFocus="true" does not work, try calling setSelectAllOnFocus(true) on that particular EditText.

If that doesn't work either, this is another workaround from a previous SO post.

EditText dummy = ... 

dummy.setOnFocusChangedListener(new OnFocusChangedListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});


I had a similar issue and android:selectAllOnFocus="true" did not work for me. The reason was that i was programatically requesting focus to the EditText before it was displayed. So if you are doing this for a EditText in an AlertDialog make sure you show it before you request focus to the EditText.


EditText should be focussed after it displayed.

Following workout worked for me,

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    // Set Input Methode
    getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}

@Override
public void onStart() {
    super.onStart();

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            Dialog dialog = getDialog();
            if (dialog != null) {
            // Set Layout 
            dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

            // Set Cancelable False
            setCancelable(false);

            // Set Focus Here <------------------------
            uiET_myTextView.requestFocus();
            }            
        }
    });
}


Try removing your focus commands. They aren't necessary, Android should focus on the first field automatically?


I also noticed that with android:selectAllOnFocus="true" seemed not to work, I used the mouse to select EditText in the emulator, but if I used my finger and touched it, as if on the phone, it worked. If you don't have a touch screen on your computer you may have to install your app on a physical device to test it. Android Studio may not recognize the mouse in this case


I'll refer to this older post.

If you just want your EditText to show a hint (for "what goes in here"), you might want to use the Android's XML-attribute hint (link).

0

精彩评论

暂无评论...
验证码 换一张
取 消