2010-08-02 15 views
10

Ho bisogno di sapere quando l'utente tocca/tocca/fa clic sul edittext nella mia attività.Rileva il tocco su EditText, ma non lo interrompe?

Come posso fare questo senza interrompere gli eventi, quindi la tastiera continua a essere visualizzata correttamente?

(e ho bisogno di sapere prima che il sistema operativo viene visualizzata la tastiera ... se possibile)

risposta

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

Grazie, anche se non avevo bisogno della riga sopra 'return false;' come la tastiera è apparso automaticamente. –

0

Si dovrebbe essere in grado di fare questo collegando un OnClickListener al vostro EditText. Se sei preoccupato di bloccare il thread dell'interfaccia utente in OnClickListener, puoi generare una nuova discussione e svolgere il tuo lavoro lì, anche se, se lo fai, non è garantito che il lavoro venga eseguito prima che la tastiera venga visualizzata.

+0

Se ho collegato un nuovo onFocusChangeListener, interrompe la tastiera e deve essere premuto due volte per mostrarlo. Quando ho scavalcato, c'è un modo per chiamare super o qualcosa? Forse sto raggiungendo ... –

+0

... onClickListener non fa il trucco btw :) –

+1

OK. Prova a guardare questo ... 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

Grazie per aver postato una risposta a questa domanda! Le risposte al solo codice sono scoraggiate su Stack Overflow, perché può essere difficile per il poster originale (o per i futuri lettori) capire la logica dietro di esse. Per favore, modifica la tua domanda e includi una spiegazione del tuo codice in modo che gli altri possano beneficiare della tua risposta. Grazie! –

0

Meno verbosità

Lo stesso Mathias Conradt's approccio, ma utilizzando Kotlin:

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

Questa linea getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); è inutile dal momento che la tastiera visualizzata quando si tocca la vista EditText.

Problemi correlati