2012-03-24 14 views
6

así que probé con android: selectAllOnFocus y por supuesto estoy usando android: hint. La aplicación carga, requestFocus dispara y se selecciona el texto completo.¿Cómo selecciono todo el texto al hacer clic en una vista de Editar texto?

El problema es que cuando hago clic en EditText, la selección se pierde.

ya he leído: Select all text inside EditText when it gets focus

+2

Eso es perfectamente normal. De lo contrario, no hay forma de que el usuario se deshaga de la selección. – CommonsWare

+1

¿Ha probado selectAllOnFocus a través de código java en un evento onclick? – AJcodez

+1

¿qué esperas * debería * suceder? según su lógica, la selección nunca desaparecerá una vez que el usuario haya hecho clic en ella. ¿Es esto realmente lo que quieres? –

Respuesta

1

establecer la selección en un View.OnClickListener así:

editText.setOnClickListener(new View.OnClickListener() { 

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

Disculpas, pero esto no funciona. El texto no se selecciona.Sin embargo, veo lo que estás tratando de hacer, y me sorprende que tampoco funcione. Estoy ejecutando ICS. –

+1

No creo que necesite la parte '- 1'. –

7

Por alguna razón, funcionó (en Jelly Bean) sólo si lo publicado con una Handler:

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

esta fue la única solución que funcionó para mí en Android 4+ – user2302510

+0

igual para mi situación: llamar a setText() en un BroadcastReceiver en un EditTextPreference – wrapperapps

1

establecer la selección en un View.OnClickListener así: (con el 0 y el texto longitud opuesta a la approv previamente respuesta ed): esto asegurará que cuando el usuario comience a escribir el contenido será anulado.

editText.setOnClickListener(new View.OnClickListener() { 

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

Para seleccionar todo el texto, debe escribir editText.setSelection (editText.getText(). Length(), 0); –

1

Me doy cuenta de que esta es una publicación anterior, pero tuve el mismo problema. Para mí, el razonamiento fue que me gusta mover el teclado fuera del camino (descartarlo) para orientarme (o presionar botones para agregar o eliminar filas de datos) y cuando toqué nuevamente el EditText que estaba editando anteriormente, Era molesto hacer que el teclado apareciera de nuevo y el texto se deseleccionara, obligándome a trabajar para colocar el cursor donde quería comenzar a borrar, o tocar otro EditText y luego tocar el original para volver a seleccionar todo . Solo quiero hacer que el teclado aparezca de nuevo y tener el texto seleccionado y listo para sobrescribir cada vez que vaya a EditText.

hay soluciones fáciles a esto:

1) del grifo largo lo hace por usted en la mayoría de las ocasiones.

2) Si ya está utilizando setSelectAllOnFocus(true), puede simplemente tirar un simple clearFocus() y requestFocus() en su onClick oyente:

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

De esta manera el EditarTexto ha seleccionado todo cuando se pulsa sobre él, sin tener en cuenta estado del teclado suave.

bono adicional: Añadir android:windowSoftInputMode="adjustPan" dentro de la etiqueta <activity .../> en su archivo AndroidManifest.xml para forzar la EditarTexto seleccionado para permanecer a la vista cuando el teclado en pantalla aparece.

0

probar este

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

Para seleccionar todo el texto.

Cuestiones relacionadas