Como mostrar um texto caixa de edição “over” na tela?
-
19-08-2019 - |
Pergunta
Eu tenho um aplicativo que tem um layout principal do retrato (ela está fixada como retrato), e não há um lugar para digitar texto. Eu gostaria de lançar como uma janela pop-up na orientação paisagem com a imagem de fundo embaçado fora. Eu sei que há um Popup Widget, mas quaisquer ideias para girar caixa de edição de texto seria ótimo. Girando-o em um modo retrato (caixa de texto somente) quando o teclado é deslizou para fora também funcionaria, como seria mostrar uma nova tela com a caixa de texto no slide teclado.
Solução
A solução mais fácil para o seu problema é exibir o seu EditText
dentro de uma atividade temática dialog
separado que você iniciar a partir da sua actividade principal (fixo-retrato).
A Atividade EditText não deveria ter a sua orientação fixa, por isso vai rodar como seria de esperar quando você desliza o teclado.
Criar o texto Atividade Entrada
Criar uma nova atividade a contém apenas o EditText Ver e qualquer outra coisa que você deseja incluir (provavelmente OK / botões e talvez um rótulo Anular?). Dentro do manifesto definir seu tema para Theme.Dialog
.
<activity android:name="TextEntryActivity"
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
nebulização ou desfocado as atividades por trás de um diálogo é feito modificando as propriedades da janela da Atividade de primeiro plano (o diálogo de entrada de texto). Dentro dele de onCreate getWindow().setFlags
uso do método para aplicar borrar a qualquer fundo Atividades.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Lançamento e Leitura valores inseridos do texto Atividade Entrada
Use startActivityForResult
para iniciar a atividade de entrada de texto. Dentro desse setResult
chamada Atividade para retornar a string texto inserido dentro da retornou intenção utilizando as técnicas descritas em este post .
Substitua o método onActivityResult
para ouvir o resultado do sub Atividade.
Disparo Lançamento no teclado Exposed
Você pode iniciar a atividade de entrada de texto sempre que quiser, mas se você quiser sempre exibi-lo quando o teclado está exposto você pode capturar este evento explicitamente.
Comece adicionando o atributo android:configChanges
à entrada manifesto do Activity retrato. Deve ser registrado para ouvir keyboardHidden
.
android:configChanges="keyboardHidden"
Dentro dessa atividade, override onConfigurationChanged
para iniciar a atividade de entrada de texto.
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
Você pode querer verificar para confirmar o teclado está sendo exposta (em vez de oculto) utilizando a variável newconfig antes de lançar a Atividade de entrada de texto.
Você também pode querer usar a mesma técnica para retornar automaticamente a partir da atividade de entrada de texto quando o teclado está escondido.