2012-01-08 23 views
6

¿Cómo inserto caracteres en el medio de un campo EditText?
Estoy haciendo una calculadora que puede tomar una expresión de cadena como "3 * (10^2-8)". Estoy usando un campo EditarTexto para hacer la cadena usando XML, así:Android EditText inserting

EditarTexto

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" 

y luego en mi actividad Tengo, por ejemplo:

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

Ahora tengo una EditarTexto campo con el cursor parpadeando después del tercer carácter en la cadena. ¿Cómo inserto un personaje allí, entonces dice correctamente "blahblahblah"?

Respuesta

4

El método getText() del widget EditText devuelve un objeto que implementa la interfaz editable. En este objeto, puede llamar al método insert() para insertar texto en una posición determinada.

Me enteré leyendo la documentación, pero nunca la usé yo. Pero para sus necesidades, para insertar un carácter en la posición seleccionada en EditText, lo siguiente debería funcionar:

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

Gracias Jan-Henk. No entendí que implementa la interfaz Editbale, así que no verifiqué allí. Esto es lo que estoy usando. De esta manera, puedo usar cualquier punto de inserción que ya esté seleccionado. Entrada editableE1 = entry.getText(); entryE1.insert (entry.getSelectionStart(), "1"); Parece que funciona muy bien. –

+0

Actualicé mi respuesta con el método getSelectionStart() que mencionaste. –

+0

¡Es realmente excelente! – Sakthimuthiah

0

Digamos que usted tiene una cadena denominada str y contiene "blablahblah" y desea que sea "blahblahblah" se puede hacer lo siguiente:

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

Haga la primera 3, agregue la nueva carta, coloca todo lo demás. De modo que podría tomar el String del EditText, cambiarlo así y luego poner el nuevo String como el nuevo valor de EditText.