2012-03-24 15 views
6

così ho provato Android: selectAllOnFocus e ovviamente sto usando Android: suggerimento. L'applicazione carica, richiede i trigger di messa a fuoco e viene selezionato il testo completo.Come seleziono tutto il testo quando si fa clic su una vista Modifica testo?

Il problema è che quando faccio clic su EditText la selezione è persa.

ho già letto: Select all text inside EditText when it gets focus

+2

Questo è perfettamente normale. Altrimenti, non c'è modo per l'utente di sbarazzarsi della selezione. – CommonsWare

+1

Hai provato selectAllOnFocus tramite codice java in un evento onclick? – AJcodez

+1

cosa ti aspetti che * dovrebbe * accadere? secondo la tua logica, la selezione non sparirà mai una volta che l'utente ha cliccato su di essa. E 'davvero ciò che vuoi? –

risposta

1

impostare la selezione in un View.OnClickListener in questo modo:

editText.setOnClickListener(new View.OnClickListener() { 

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

Ci scusiamo, ma questo non funziona. Il testo non viene selezionato.Vedo però quello che stai cercando di fare, e sono sorpreso che non funzioni neanche. Sto eseguendo ICS. –

+1

Non penso che tu abbia bisogno della parte '- 1'. –

7

Per qualche ragione, ha funzionato (su Jelly Bean) solo se ho postato con un handler:

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

questa era l'unica soluzione che ha funzionato per me su Android 4+ – user2302510

+0

uguale per la mia situazione: chiamata setText() in un BroadcastReceiver in un EditTextPreference – wrapperapps

1

Impostare la selezione in un View.OnClickListener modo: (con la lunghezza 0 e il testo opposto al precedente Approv risposta) - questo assicurerà che quando l'utente inizia a digitare il contenuto verrà sovrascritto.

editText.setOnClickListener(new View.OnClickListener() { 

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

Per selezionare tutto il testo è necessario scrivere editText.setSelection (editText.getText(). Length(), 0); –

1

Mi rendo conto che questo è un vecchio post, ma ho avuto lo stesso problema. Per me, il ragionamento è stato che mi piace spostare la tastiera (allontanarla) per orientarmi (o premere i pulsanti per aggiungere o rimuovere righe di dati) e quando ho toccato di nuovo EditText che stavo modificando in precedenza, era fastidioso riaprire la tastiera e il testo non selezionare, costringendomi a lavorare per portare il cursore dove volevo iniziare a cancellare, o toccare un altro EditText e quindi toccare nuovamente l'originale per riselezionare tutto . Voglio solo riavviare la tastiera e avere il testo selezionato e pronto per sovrascrivere ogni volta che vado su EditText.

Non ci sono soluzioni facili a questo:

1) rubinetto lungo fa questo per voi il più delle volte.

2) Se si sta già utilizzando setSelectAllOnFocus(true), si può semplicemente gettare un semplice clearFocus() e requestFocus() nel onClick ascoltatore:

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

In questo modo l'EditText ha tutto quello selezionato quando si tocca su di essa, a prescindere dalla stato della tastiera morbida.

bonus supplementare: Aggiungere android:windowSoftInputMode="adjustPan" all'interno del tag <activity .../> nel file AndroidManifest.xml per forzare l'EditText selezionato per rimanere in vista, quando la tastiera virtuale si apre.

0

provare questo

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

Per selezionare tutto il testo.

Problemi correlati