Android: Como fazer com que o teclado sempre visível?
Pergunta
No Android, como é que vamos fazer o teclado do dispositivo sempre visível na aplicação? A parte superior exibe o conteúdo do aplicativo quer tornar ea parte inferior mostra o teclado sempre.
Solução
Adicionar android: windowSoftInputMode = "stateAlwaysVisible" a sua atividade no arquivo AndroidManifest.xml:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
No meu aplicativo de teste isso mostra o teclado na partida do aplicativo embora não seja fixo lá, mas pode ser descartada, premindo o botão de volta.
Para certificar-se o teclado está sempre visível que você pode ter para criar o seu próprio teclado como parte da interface do usuário de sua aplicação. Aqui está um tutorial para mostrar-lhe como fazer isso com KeyboardView: http: // www .fampennings.nl / Maarten / android / 09keyboard / index.htm
Outras dicas
Você deve ter uma EditText
em seu layout e que necessidade de classe extensão de base EditText
. em seguida, substituir o método onKeyPreIme()
e retorno true . Agora seu teclado será sempre visível e não pode ser demitido pelo tecla Voltar.
Atenção :. Porque do seu método onKeyPreIme()
retornos true
você não pode sair do seu aplicativo usando a chave de volta ??p>
Exemplo:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
Eu encontrei uma maneira que funciona para mim para manter o teclado virtual visível após uma edição no meu campo myEditText
de EditText
classe. O truque consiste em substituir o método onEditorAction
para que ele retorne true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
ou então têm onEditorAction
retorno true
somente após o "Done" chave clique com o botão ( IME_ACTION_DONE
) caso contrário false
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
(ver também este resposta sobre o método onEditorAction
)
Adicionando android:windowSoftInputMode="stateAlwaysVisible
ao arquivo de manifesto ajudou a ter o teclado virtual mostrado no início da atividade mas não impedi-lo de desaparecer novamente sempre que a tecla "Done" foi clicado após uma edição.