2012-01-08 21 views
6

Come inserire caratteri nel mezzo di un campo Modifica testo?
Sto facendo una calcolatrice che può prendere un'espressione di stringa come "3 * (10^2-8)". Sto usando un campo EditText per rendere la stringa utilizzando XML in questo modo:Android EditText inserimento

EditText

android:id="@+id/entry" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_below="@id/label" 
android:text="@string/testString1" 
android:background="@android:drawable/editbox_background" 

e poi nella mia attività ho, diciamo:

entry = (EditText)findViewById(R.id.entry); 
entry.setText("blablahblah"); 
entry.setSelection(3); 

ora ho un EditText campo con il cursore che lampeggia dopo il terzo carattere nella stringa. Come inserisco un personaggio lì, quindi dice correttamente "blahblahblah"?

risposta

4

Il metodo getText() del widget EditText restituisce un oggetto che implementa l'interfaccia Modificabile. Su questo oggetto è possibile chiamare il metodo insert() per inserire il testo in una determinata posizione.

Ho trovato questo fuori leggendo la documentazione, ma mai usato questo da solo. Ma per le tue esigenze, per inserire un personaggio nella posizione selezionata in EditText, dovrebbe funzionare quanto segue:

Editable text = entry.getText(); 
text.insert(entry.getSelectionStart(), "h"); 
+0

Grazie Jan-Henk. Non ho capito che implementa l'interfaccia di Editbale quindi non ho controllato lì. Ecco cosa sto usando. In questo modo posso semplicemente usare qualsiasi punto di inserimento è già selezionato. Editable entryE1 = entry.getText(); entryE1.insert (entry.getSelectionStart(), "1"); Sembra funzionare alla grande. –

+0

Ho aggiornato la mia risposta con il metodo getSelectionStart() che hai citato. –

+0

È davvero fantastico! – Sakthimuthiah

0

Diciamo che avere una stringa denominata str e contiene "blablahblah" e si desidera renderlo "blahblahblah" è possibile effettuare le seguenti operazioni:

String newString = str.substring(0, 3) + "h" + str.substring(3); 

Prendere i primi 3, aggiungere la nuova lettera, posiziona tutto il resto Quindi puoi prendere la String da EditText, cambiarla in questo modo e quindi inserire la nuova String come nuovo valore di EditText.