Em dispositivos Android que usam teclados programáveis, quero impedir que a exibição de edição do teclado em tela cheia (mostrada abaixo) apareça no modo paisagem (ou seja, quero ver apenas o próprio teclado virtual e a minha visão por trás dele).
Presumo que isso possa ser alcançado usando o setExtractViewShown(false)
método on InputMethodService
, mas não consigo acessar a instância padrão disso e não quero implementar um método de entrada personalizado.
Editado para adicionar: a visualização para a qual a entrada está indo não é uma TextView
(é uma View
com uma InputConnection
implementação personalizada ), portanto android:imeOptions="flagNoExtractUi"
, não funcionará aqui.
flagNoExtractUi
ouIME_FLAG_NO_EXTRACT_UI
. No entanto, na documentação referente aIME_FLAG_NO_EXTRACT_UI
, que corresponde aflagNoExtractUi
, afirma que "O uso desse sinalizador é desencorajado e pode ficar obsoleto no futuro", assimflagNoFullscreen
como a opção recomendada.Respostas:
Eu finalmente respondi minha própria pergunta:
A interface do usuário de extração (ou seja, o modo de edição em tela cheia) pode ser desativada no ponto em que a conexão de entrada está conectada:
fonte
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Para fazer isso, navegue até a atividade xml e cole
android:imeOptions="flagNoExtractUi"
no seu código. Mas onde deve ser colado? Veja o código do exemplo de atividade xml e veja EditText:Se você quiser mais opções de personalização para o teclado, consulte http://developer.android.com/guide/topics/ui/controls/text.html
fonte
adicione a propriedade
android:imeOptions="flagNoExtractUi"
a cada umEditText
no seuXML
arquivo.fonte
A resposta acima me ajudou a descobrir a solução para EditTexts adicionados dinamicamente:
fonte
Use
android:imeOptions="flagNoFullscreen"
para alcançar esse recurso.fonte
IME_FLAG_NO_EXTRACT_UI
, que corresponde aflagNoExtractUi
, afirma que "O uso desse sinalizador é desencorajado e pode ficar obsoleto no futuro", assimflagNoFullscreen
como a opção recomendada.Além disso, se você quiser combinar várias imeOptions programaticamente, poderá usar o | sintaxe.
Por exemplo, para desativar a exibição de edição em tela cheia no modo paisagem e substituir a tecla "Avançar" por "OK" (ACTION_DONE) no teclado, você pode usar:
fonte
Se você estiver modificando o IME diretamente, poderá impedir que ele exiba um ExtractedView substituindo
onUpdateExtractingVisibility
:fonte
Eu sei que é um pouco tarde, mas para quem ainda está interessado, aqui está a minha solução: No meu caso, eu tinha uma Activity de paisagem contendo um EditText na parte superior e precisava implementar o recurso de preenchimento automático nesta atividade de pesquisa , que era a sobreposição teclado causou um problema que o usuário não pôde ver o resultado do RecyclerView . Então acabei tendo este EditText no meu layout:
Felicidades!
fonte
Minha solução:
fonte
Você pode usar :
no seu edittext
fonte
Você pode ligar para ocultar o teclado virtual e focar claramente no visor de pesquisa.
fonte