2012-03-24 12 views
6

więc wypróbowałem Androida: selectAllOnFocus i oczywiście używam Androida: podpowiedź. Aplikacja ładuje, wyzwalacze requestFocus i zaznaczony jest pełny tekst.Jak zaznaczyć cały tekst po kliknięciu widoku EditText?

Problem polega na tym, że po kliknięciu w EditText wybór zostaje utracony.

Już odczytać: Select all text inside EditText when it gets focus

+2

To zupełnie normalne. W przeciwnym razie użytkownik nie może pozbyć się zaznaczenia. – CommonsWare

+1

Czy próbowałeś selectAllOnFocus za pomocą kodu Java w zdarzeniu onclick? – AJcodez

+1

Czego można się spodziewać * powinno * się zdarzyć? według twojej logiki wybór nigdy nie zniknie po kliknięciu przez użytkownika. czy naprawdę tego chcesz? –

Odpowiedz

1

Ustaw zaznaczenie w View.OnClickListener tak:

editText.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     editText.setSelection(0, editText.getText().length() - 1); 
    } 
} 
+0

Przepraszam, ale to nie działa. Tekst nie zostanie wybrany.Widzę, co próbujesz zrobić, i jestem zaskoczony, że to też nie działa. Używam ICS. –

+1

Nie sądzę, że potrzebujesz części "- 1". –

7

Z jakiegoś powodu, to działało (na Jelly Bean) tylko wtedy, gdy wysłałem go z Handler:

new Handler().post(new Runnable() { 
    @Override 
    public void run() { 
     paidView.selectAll(); 
    } 
}); 
+0

to było jedyne rozwiązanie, które działało dla mnie na Androida 4+ – user2302510

+0

samo dla mojej sytuacji: wywoływanie setText() w BroadcastReceiver w EditTextPreference – wrapperapps

1

Ustaw zaznaczenie w View.OnClickListener jak: (z 0 i długością tekstu przeciwną do poprzedniej aprobaty ed odpowiedź) - to zapewni, że gdy użytkownik rozpocznie pisanie, zawartość zostanie nadpisana.

editText.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     editText.setSelection(editText.getText().length() - 1, 0); 
    } 
} 
+0

Aby zaznaczyć cały tekst, musisz napisać editText.setSelection (editText.getText(). Length(), 0); –

1

Zdaję sobie sprawę, że to stary post, ale miałem ten sam problem. Dla mnie rozumowanie polegało na tym, że lubię odsunąć klawiaturę na bok (odrzucić), aby uzyskać moje łożyska (lub przyciski w celu dodania lub usunięcia rzędów danych) i kiedy dotknąłem EditText, który wcześniej edytowałem, denerwujące było ponowne naciśnięcie klawisza klawiatury i cofnięcie wyboru tekstu, zmuszając mnie do pracy, aby przesunąć kursor do miejsca, w którym chciałem rozpocząć usuwanie, lub dotknięcia innego EditText, a następnie powrotu do oryginału, aby ponownie wybrać wszystko . Chcę tylko mieć pop klawiatury i mieć zaznaczony tekst i gotowy do nadpisania, kiedy idę do tego EditText.

Istnieją proste rozwiązania to:

1) Długi kran robi to dla ciebie w większości przypadków.

2) Jeżeli używasz już setSelectAllOnFocus(true), można po prostu wyrzucić prosty clearFocus() i requestFocus() w swoim onClick słuchacza:

etMyEditText.setSelectAllOnFocus(true); 
etMyEditText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     view.clearFocus(); 
     view.requestFocus(); 
    } 
}); 

ten sposób EditText ma wszystko, wybrany po dotknięciu na nim, niezależnie od tego, status miękkiej klawiatury.

Dodatkowa premia: Dodaj android:windowSoftInputMode="adjustPan" wewnątrz tagu <activity .../> w pliku AndroidManifest.xml zmusić wybrany EditText pozostać w oczach, gdy klawiatura wyskakuje.

0

spróbować to

editText.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    editText.selectAll(); 
    //or this.selectAll(); 
} 

Aby zaznaczyć cały tekst.

Powiązane problemy