Come rimuovere la messa a fuoco automatica / popup della tastiera di un campo quando viene visualizzata la schermata?


105

Ho una schermata in cui il primo campo è un EditText, e ottiene il focus all'avvio, fa anche apparire il tipo di input numerico, che è molto fastidioso

Come posso assicurarmi che quando l'attività viene avviata il focus non viene raggiunto e / o il pannello di input non viene sollevato?

Risposte:


157
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

o

imposta la proprietà dell'attività nel file manifest come di seguito nel tag dell'applicazione

android:windowSoftInputMode="stateHidden"

L'impostazione di android: windowSoftInputMode nel file AndroidManifest.xml può essere combinata con altri valori. La modalità in genere implica valori singoli, ma in questo caso il valore è una raccolta di flag. Descrizione dei valori:Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir

145

vai al file manifest dell'applicazione e scrivi questa riga per l'attività che desideri disabilitare il pop-up automatico della tastiera.

android:windowSoftInputMode="stateHidden"

Non ha funzionato per me. L'ho inserito in activity_main.xml. Ha funzionato perfettamente quando l'ho inserito in onCreate (). . getWindow () setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez

20

Per non visualizzare programmaticamente la tastiera, ma il widget predefinito riceve comunque la chiamata di attivazione:

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

nel onResume()


11
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

chiama il metodo sopra in onCreate () . Impedisce la visualizzazione di softKeyboard a meno che l'utente non selezioni EditText contapping or clicking.

o semplicemente aggiungi android:windowSoftInputMode="stateHidden"tag attività inManifest.xml


10

Di solito è un casino. La prima cosa che provo è provare a rubare la messa a fuoco con un'altra visuale via. Devi anche avere focusable e focusableInTouchMode.

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>

Funziona. Penso che questo sia un approccio più pulito, ma dipende anche da come sono le tue condizioni. Accetto questo.
JaydeepW

5

Avere un'altra vista per concentrarsi. Per impostazione predefinita, la prima vista attivabile verrà attivata quando un layout viene gonfiato. Puoi richiedere il focus su una vista diversa tramite XML:

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

Funziona per qualsiasi vista.

Se vuoi farlo in modo programmatico, puoi usare view.requestFocus().


0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

3
Benvenuto in StackOverflow! Questo non è come gli altri forum, se vuoi cambiare la tua risposta, fai clic sul editlink e apporta le tue modifiche. E prova a formattare il codice selezionando il codice e utilizzando il pulsante Esempio di codice {}o premendo Ctrl+K.
Peter Lang

0

L'aggiunta android:windowSoftInputMode="stateHidden"alla tua attività nel manifest nasconde la tastiera solo quando avvii l'attività o come dice Google

Quando l'utente si sposta in modo affermativo in avanti verso l'attività, piuttosto che tornare indietro perché ha abbandonato un'altra attività

Per nascondere la tastiera anche quando l'utente preme il pulsante Indietro e torna alla tua attività da un'altra attività, usa android:windowSoftInputMode="stateAlwaysHidden"


-1

non l'ho provato né sono vicino al mio computer di programmazione, ma sospetto che l'invio programmatico del focus alla vista genitore o qualcosa di simile possa fare il trucco - questa è più probabilmente una soluzione alternativa che una soluzione, ma ancora una volta non sono in grado di testarla solo un pensiero


1
L'ho provato ma non funziona. Ho chiamato .requestFocus();un pulsante e ancora il popup della tastiera.
Pentium10

pensieri possono essere aggiunti come commenti
Alberto M
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.