Como parar o teclado virtual Android de nunca chegando em toda a minha aplicação

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

  •  19-09-2019
  •  | 
  •  

Pergunta

Estou desenvolvendo um aplicativo em um dispositivo de hardware que tem um built-in teclado de hardware que não deslizar para fora assim é sempre visível (como uma amora). Portanto, eu nunca quero o teclado virtual para exibição para toda a minha aplicação. Estou ciente outra questão para que dá a seguinte linhas de código:

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

Mas eu não sei onde colocar esse código para ocultar o teclado virtual em todos os lugares onde ele pode eventualmente aparecer na minha atividade. Eu tentei adicionar o código para Activity.onUserInteraction sem sucesso. Parece que as aparece teclado depois executa a onUserInteraction.

Eu também tentei adicionar o seguinte ao meu <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Teclado programado ainda aparece.

Foi útil?

Solução

A sua aplicação não deve fazer nada. firmware do dispositivo deve conter uma configuração que inibe o teclado virtual com base no teclado hardware sendo visível, assim como todos os outros dispositivos Android que tem um teclado de hardware. Se isso não está acontecendo, falar com o fabricante de hardware e ver se eles estão pensando em abordar esta.

Outras dicas

Uma solução fácil para amanhã apresentação:

Gostaria de criar um novo IME com uma vista vazia. Aqui estão dois projetos de código aberto para que você possa olhar para algum código.

Se você quiser saber mais sobre os métodos de entrada, vá para o Criação de um método de entrada .

Se um EditText tem uma inputType de 0, o teclado virtual nunca vai aparecer quando que EditText é selecionado.

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

Esta vontade de necessidade curso a ser feito para todos os EditTexts em seu aplicativo, ou você poderia sempre subclasse EditText e definir o tipo de entrada para 0 em seu construtor.

A definição do parâmetro xml inputType não vai fazer, uma vez que corresponde a uma chamada para o método setRawInputType, que não remove o KeyListener.

Eu resolvi, substituindo método onCheckIsTextEditor na minha um-bit personalizado EditText.

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

Onde quer que você tem Editar texto, colocar esse código ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top