2010-06-24 11 views
7
<EditText android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_weight="1" 
    android:id="@+id/name" android:singleLine="true" 
    android:maxLength="12" android:capitalize="none" android:inputType="text" /> 
<Button android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/search_button" 
    android:text="Search" /> 

Ho questo nella parte superiore della mia domanda. All'avvio dell'applicazione, EditText è evidenziato in arancione e contiene un cursore; quando viene toccato EditText, viene visualizzata la tastiera virtuale. L'utente lo usa per digitare in EditText.Android: EditText e Button; quando si fa clic su Button, sfocare EditText e nascondere la tastiera virtuale?

Tuttavia, quando fanno clic sul pulsante, il metodo onClick si attiva e fa tutto ciò che è previsto, tuttavia la tastiera virtuale rimane sullo schermo e il testo è ancora evidenziato con il cursore.

ho anche avere, in cima il pulsante onclick:

findViewById(R.id.name).clearFocus(); 

Nonostante ciò, l'EditText non sembra per cancellare la sua attenzione. Come faccio a fare in modo che il pulsante agisca come se inviasse il modulo?

Inoltre, non si passa a un'attività diversa al clic del pulsante. Suppongo che sia il caso tipico, e probabilmente il motivo per cui non si preoccupano di nascondere la tastiera. Tuttavia, voglio mantenere la casella di ricerca e il pulsante nella parte superiore dello schermo, in modo da riempire e aggiungere dinamicamente le viste allo schermo quando viene premuto il pulsante.

Come posso ottenere il comportamento desiderato?

risposta

13

È possibile nascondere la tastiera chiamando questo.

InputMethodManager imm = (InputMethodManager) getSystemService(
    INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getWindowToken(), 0); 
+0

Sì, ma è davvero il modo migliore per farlo? – Ricket

+0

Beh, ha funzionato ... Quindi immagino sia okay ... Comunque sembra ancora un hack ... – Ricket

+1

Non è un hack, è come è fatto su tutta la sorgente Android. Presumo che sia destinato all'utente a premere per chiudere l'IME, ma se non lo fanno o se si desidera chiuderlo manualmente, questo è il modo in cui è necessario chiudere l'IME prima che Android lo chiuda da solo. –

Problemi correlati