포커스가 생기면 EditText 내의 모든 텍스트를 선택하십시오.


230

더미 텍스트가있는 EditText가 있습니다. 사용자가 그것을 클릭하면 사용자가 입력을 시작할 때 더미 텍스트가 삭제되도록 선택하고 싶습니다.

어떻게하면 되나요?

답변:


517

main.xml파일 에서 시도해 볼 수 있습니다 .

android:selectAllOnFocus="true"

또는 Java에서는

editText.setSelectAllOnFocus(true);

17
EditText xml에 UI 빌더가 삽입 한 </ requestFocus> 태그가 있으면 이것이 작동하지 않는다는 것을 알았습니다.
machtnix

@machtnix 다른 부품에 초점 추가 : stackoverflow.com/a/1662088/1020871
Love

160
editText.setSelectAllOnFocus(true);

프로그래밍 방식으로 수행하려는 경우 작동합니다.


2
또한 나를 위해 .. 위의 솔루션은 어떻게 든 작동하지 않았습니다. 프로그래밍 방식으로 작동했습니다
Martin Christmann

3
위의 승인 된 답변에 여전히 문제가있는 경우 : 대신이 방법을 사용해보십시오. 작동하는 것으로 확인되었습니다 (또한 테스트 됨 Fragments).
MrHadiSatrio

이상한 이유로 xml 방식이 제대로 작동하지 않았고 이것이 작동합니다. SDK 내부의 버그처럼 보입니다.
ar-g

그리고 프로그래밍 방식으로 초점을 맞추는 경우 ( 뷰가 이미 초점이 editText.requestFocus()editText.clearFocus()
Bad Loser

33
EditText dummy = ... 

// android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});

도와 주셔서 감사하지만 12 EditText가 있고 가능한 한 코드를 깨끗하게 유지하기 위해 TheCottonSilk의 솔루션을 선호합니다. 어쨌든 감사합니다!
Galip

@TheCottonSilk의 솔루션은 디자인 타임 위젯에 가장 적합하고 Craftos 답변은 동적 editText에 가장 적합합니다.
Bishnu Paudel

2
@Galip OnFocusChangeListener listener = new OnFocusChangeListener... 등 ... 다음 editText1.setOnFocusChangeListener(listener) editText2.setOnFocusChangeListener(listener)등등 ...
스파크

25

해결책을 찾았지만 실제로 원하는 것을 수행하는 올바른 방법은 android:hintEditText 의 속성을 사용하는 것입니다. 이 텍스트는 상자가 비어 있고 초점이 맞지 않으면 표시되지만 EditText 상자를 선택하면 사라집니다.


4
내 응용 프로그램에서 해당 필드는 저장할 수있는 개인 정보로 채워집니다. 이러한 세부 정보를로드하면 '더미'텍스트가 바뀝니다. 내 curren 방법으로 사용자가 세부 정보를 입력 한 후에 텍스트를 선택할 수도 있습니다. 걱정 해 주셔서 감사합니다!
Galip

12

프로그램에 초점을 맞추고 선택하여 관리

{
editabletext.requestFocus();
editabletext.selectAll();
}

11

사용자에게 힌트를 제공하기 위해 android : hint = "hint" 를 시도해보십시오 .. !!

사용자가 edittextbox를 클릭하면 "힌트"가 자동으로 사라집니다. 적절하고 최상의 솔루션입니다.


4
좋은 대답입니다. 그러나 EditText를 설정 등에서 읽은 값으로 채우고 가능한 한 쉽게 이러한 값을 변경하려는 경우가 있습니다 :)
nuala

5

다음에 editText에 OnClick 메서드를 추가 할 수도 있습니다.

_editText.setSelectAllOnFocus(true);

그리고 그 안에 :

_editText.clearFocus();
_editText.requestFocus();

editText를 클릭하자마자 전체 텍스트가 선택됩니다.


4

SelectAllOnFocus는 EditText가 처음으로 초점을 맞출 때 작동하지만 사용자가 클릭 마다 텍스트를 선택하려면 시간 editText.clearFocus()사이 에 전화 를 걸어야합니다.

예를 들어, 앱에 하나의 EditText와 하나의 버튼이있는 경우 EditText를 변경 한 후 버튼을 클릭하면 EditText에 포커스가 남습니다. 그런 다음 사용자는 커서 핸들과 백 스페이스 키를 사용하여 새 값을 입력하기 전에 EditText에있는 내용을 삭제해야합니다. editText.clearFocus()버튼의 onClick메소드를 호출 하십시오 .


2

위의 답변을 시도했지만 진술을 바꿀 때까지 작동하지 않았습니다. 이것이 나를 위해 일한 것입니다.

    myEditText.setSelectAllOnFocus(true);
    myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickMyEditText();
        }
    });

   private void onClickMyEditText() {
       if(myEditText.isFocused()){
        myEditText.clearFocus();
        myEditText.requestFocus();
       }else{
           myEditText.requestFocus();
           myEditText.clearFocus();
       }
   }

포커스가 EditText에 있는지 묻고 포커스를 먼저 요청하지 않으면 취소하십시오. 그렇지 않으면 다음에 EditText를 클릭하면 가상 키보드가 나타나지 않습니다.



0

이것은 나를 위해 작동합니다 :

myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(myEditText.isFocused()){
                myEditText.requestFocus();
                myEditText.clearFocus();
                myEditText.setSelection(myEditText.getText().length(), 0);
            }else{
                myEditText.requestFocus();
                myEditText.clearFocus();
            }

        }
    });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.