2010-08-02 16 views
10

Necesito saber cuándo el usuario toca/toca/hace clic en el texto de edición en mi actividad.¿Detect touch en EditText, pero no lo interrumpe?

¿Cómo puedo hacer esto sin interrumpir los eventos, por lo que el teclado todavía se muestra correctamente?

(y necesito saber acerca de ella antes de que el sistema operativo muestra el teclado ... si es posible)

Respuesta

28
txtEdit.setOnTouchListener(new View.OnTouchListener(){ 
    public boolean onTouch(View view, MotionEvent motionEvent) {              
     // your code here.... 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);     
     return false; 
    } 
}); 
+3

Gracias, aunque no necesitaba la línea de arriba 'return false;' como el teclado apareció automáticamente. –

0

Usted debe ser capaz de hacer esto mediante la fijación de un OnClickListener a su EditarTexto. Si le preocupa bloquear el hilo de la interfaz de usuario en OnClickListener, puede generar un nuevo hilo y hacer su trabajo allí; sin embargo, si lo hace, no hay garantía de que el trabajo se realice antes de que aparezca el teclado.

+0

Si adjunté un nuevo en FocusChangeListener, interrumpe el teclado, y tiene que presionarse dos veces para mostrarlo. Cuando anulo, ¿hay alguna manera de llamar a super o algo así? Tal vez estoy llegando a ... –

+0

... onClickListener no hace el truco por cierto :) –

+1

OK. Intente mirar esto ... http://stackoverflow.com/questions/2403632/android-show-soft-keyboard-automatically-when-focus-is-on-an-edittext – iandisme

1
View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if(event.getAction() == MotionEvent.ACTION_UP){ 

... 


} 
+0

¡Gracias por publicar una respuesta a esta pregunta! Las respuestas de solo código se desalientan en Stack Overflow, porque puede ser difícil para el afiche original (o futuros lectores) comprender la lógica detrás de ellos. Por favor, edite su pregunta e incluya una explicación de su código para que otros puedan beneficiarse de su respuesta. ¡Gracias! –

0

Menos verbosidad

La misma Mathias Conradt's enfoque, pero utilizando Kotlin:

txtEdit.setOnTouchListener({ view, motionEvent -> 
    // your code here.... 
    false 
}) 

Esta línea getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); es innecesaria, ya que el teclado se muestra cuando se toca el punto de vista EDITTEXT.

Cuestiones relacionadas