Come fermare l'androide tastiera virtuale per sempre di venire in tutta la mia applicazione

StackOverflow https://stackoverflow.com/questions/2429595

  •  19-09-2019
  •  | 
  •  

Domanda

Sto sviluppando un'applicazione su un dispositivo hardware che dispone di una tastiera integrata hardware che non scivolare fuori così è sempre visibile (come una mora). Pertanto, non voglio la tastiera virtuale da visualizzare per intero la mia domanda. Sono consapevole di un'altra domanda SO che ha pronunciato la seguente linee di codice:

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

Ma non so dove mettere questo codice per nascondere la tastiera virtuale in tutti i luoghi in cui potrebbe forse apparire nella mia attività. Ho provato ad aggiungere il codice per Activity.onUserInteraction senza alcun risultato. Sembra che viene visualizzata la tastiera dopo il onUserInteraction esegue.

Inoltre ho provato ad aggiungere il seguente al mio <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

appare ancora tastiera virtuale.

È stato utile?

Soluzione

L'applicazione non deve fare nulla. Il firmware del dispositivo dovrebbe contenere una configurazione che inibisce la tastiera virtuale sulla base di essere visibile la tastiera hardware, proprio come ogni altro dispositivo Android che dispone di una tastiera hardware. Se questo non sta accadendo, parlare con il produttore di hardware e vedere se stanno progettando su come affrontare questo.

Altri suggerimenti

Una soluzione facile per la presentazione di domani:

vorrei creare un nuovo IME con una vista vuota. Qui ci sono due progetti opensource per voi a guardare qualche codice.

Se vuoi sapere di più su metodi di input, andare a Creazione di un metodo di input .

Se un EditText ha un InputType di 0, la tastiera virtuale non potrà mai pop-up quando si seleziona che EditText.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

Ovviamente questo deve essere fatto per tutti i EditTexts nell'applicazione, o si potrebbe sempre sottoclasse EditText e impostare il tipo di ingresso a 0 nel costruttore.

L'impostazione del parametro xml InputType non lo farà, dal momento che corrisponde a una chiamata al metodo setRawInputType, che non rimuove i KeyListener.

ho risolto ridefinendo onCheckIsTextEditor metodo a mio un bit-custom EditText.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

Dove mai hai Modificare il testo, inserire questo codice ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top