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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top