Sou novo no Android. Já passei duas horas procurando. O que quer que eu tente, o teclado virtual nunca é mostrado para oEditText
. Eu crio simplesmente:
EditText editText = (EditText)findViewById(R.id.editText);
Eu tentei:
editText.requestFocus();//i tried without this line too
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
e:
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus)
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});
eu também tentei:
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
eu tentei colocar esta linha em AndroidManifest.xml
arquivo:
android:windowSoftInputMode="stateVisible|adjustResize"
mas tudo em vão. Simplesmente nunca aparece. O que estou perdendo?
Respostas:
Você precisa ter certeza de que seu emulador não está configurado para usar um teclado de hardware . Isso pode ser feito escolhendo
Edit
um emulador selecionado no AVD. Em seguida, desmarque aHardware keyboard present
configuração.Você também pode tentar usar um emulador diferente, como Genymotion . Ele suporta aceleração total de hardware (CPU multi-core, bem como GPU) e é executado muito mais rápido do que qualquer uma das imagens do emulador Android. Se você usar o Genymotion, precisará desativar o teclado de hardware no Android (veja detalhes abaixo).
Para desativar o teclado de hardware no Genymotion:
Vá para
Settings
->Language & input
e abra oDefault
item emKeyboard & Input Methods
. Há umaHardware
configuração que você pode ativar / desativar. Quando está ligado, você usa seu teclado físico e quando está desligado o teclado virtual padrão deve aparecer sempre que um campo de texto recebe o foco.Capturas de tela para as configurações do Genymotion:
fonte
Na versão 2.1.1 - clique nas configurações do dispositivo virtual - a seguir selecione a caixa de seleção "usar teclado virtual para digitar".
fonte
Existem dois locais para desmarcar o teclado de hardware no AS 1.1.0. Este não é suficiente:
Deve fazer isso (clique
Tools | Android | AVD Manager
; em seguida, crie um novo ou edite o AVD antigo e clique emShow Advanced Settings
; role para baixo e limpeEnable keyboard input
):fonte
O método para habilitar o teclado virtual na tela para emuladores Android Studio 2+ depende do nível de API do emulador. Testei os vários métodos começando com a API 15 e registrei as etapas abaixo.
[A] APIs 15, 17, 19 e 21.
As etapas a seguir habilitarão o teclado virtual na tela, mas desabilitarão a capacidade de inserir texto e interagir com o AVD usando o teclado de hardware do computador.
[B] API 22
O teclado virtual é exibido independentemente do que você faça com as configurações do teclado de hardware. Se você deseja ativar o suporte para teclado de hardware junto com o teclado virtual,
[C] API 23
Se você deseja usar o hardware e o teclado virtual, então ...
Se você não precisa do teclado de hardware, nas configurações avançadas do AVD, desmarque a opção "Ativar entrada de teclado". Você não precisará alterar nenhuma configuração no dispositivo virtual.
[D] APIs 24 e 25
Se a opção Ativar entrada de teclado foi selecionada no AVD, agora você poderá usar as entradas de teclado físico e virtual. Se você desmarcou a opção no AVD, o teclado virtual será exibido independentemente.
[E] API 26
Exatamente igual às [D] APIs 24 e 25, exceto que você precisa navegar por um nível de menu "Sistema" adicional nas configurações do dispositivo antes de acessar Idioma e entrada / Teclado físico
fonte
Pode ser que seu emulador não suporte softkeyboard.
Adicione uma propriedade de hardware Suporte de teclado e defina-o como verdadeiro para o seu emulador.
Se já for verdade, verifique esta resposta.
fonte
Mostrar:
EditText editText = (EditText) findViewById(R.id.myEdit); InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); // only will trigger it if no physical keyboard is open mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
E para esconder:
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
Experimente este ...
fonte