Eu tenho alguns elementos em um RelativeView com o atributo de alinhamento inferior definido, quando o teclado virtual aparece, os elementos são ocultados pelo teclado virtual.
Eu gostaria que eles subissem para que, se houver espaço suficiente na tela, eles sejam mostrados acima do teclado, ou tornem a seção acima do teclado rolável para que o usuário ainda possa ver os elementos.
Alguma idéia de como abordar isso?
Respostas:
Sim, confira este artigo no site dos desenvolvedores do Android, que descreve como a estrutura lida com a exibição do teclado virtual.
O
android:windowSoftInputMode
atributo pode ser usado para especificar o que acontece em uma base por atividade: se o layout é redimensionado ou se rola etc.fonte
Você também pode usar este código no
onCreate()
método:fonte
Adicione AndroidManifest.xml à sua atividade:
fonte
Faça alterações na atividade do seu arquivo de manifesto, como
OU
Faça alterações no seu
onCreate()
método na classe de atividade comofonte
problema semelhante que eu estava enfrentando com o meu layout, que consiste na exibição de rolagem dentro. Sempre que tento selecionar texto no EditText, a barra de ação Copiar / Cortar / Colar é movida para cima com o código abaixo, pois não redimensiona o layout
Modificando-o como abaixo
1) AndroidManifest.xml
2) arquivo style.xml, no estilo de atividade
Funcionou.!!!!!!!!!!!!
fonte
No AndroidManifest.xml, não se esqueça de definir:
e para RelativeLayout dentro de ScrollView, defina:
tudo vai dar certo
fonte
for Activity em sua inserção de método oncreate abaixo da linha
e para fragmentos em seu método onCreate
fonte
Existem três etapas a seguir para rolar a tela para cima.
PS Não esqueça de adicionar o android: layout_gravity = "center" no layout relativo dos pais.
fonte
Eu tentei um método de Diego Ramírez, funciona. No AndroidManifest:
Em activity_main.xml:
fonte
Adicione NestedScrollView ao redor do layout que você deseja rolar, isso funcionará perfeitamente
fonte
Eu encontrei uma solução para meus problemas que é praticamente a mesma que a sua.
Primeiro de tudo, eu só tenho um LinearLayout com 2 elementos, um ImageView e um LinearLayout que contêm 2 EditText e um Button, então eu precisava mantê-los separados em tela cheia sem teclado, e quando o teclado aparecer, eles deverão parecer mais próximos.
Então, adicionei a visualização entre eles com o atributo height em 0dp e weight 1, que permite manter minhas visualizações separadas uma da outra. e quando o teclado aparece, como eles não têm uma altura fixa, eles apenas redimensionam e mantêm o aspecto.
Voila! O redimensionamento do layout e a distância entre minhas visualizações são as mesmas quando o teclado está ou não presente.
fonte
ConstraintLayout
e fixando uma seção superior na parte superior e uma seção inferior na parte inferior. Quando o teclado é aberto, ele é redimensionado naturalmente, espremendo o espaço no meio (se você usaradjustResize
)fonte
Aqui está o código completo do manifesto
fonte
se você estiver em fragmentos, precisará adicionar o código abaixo ao seu onCreate na sua atividade que resolve o problema para mim
fonte
No seu arquivo de manifesto, adicione a linha abaixo. Vai funcionar
fonte
Acabei de adicionar a seguinte linha ao layout de nível superior e tudo funcionou:
fonte
Tudo bem, isso é muito tarde, no entanto, eu descobri que, se você adicionar uma Visualização de lista ao seu texto de edição, o teclado moverá todos os layouts nesse edittext sem mover o ListView
Esta é a única solução que funcionou para mim.
fonte
Nem um único conselho resolve meu problema. Ajustar Pan é quase como o trabalho Ajustar Redimensionar . Se eu definir Ajustar nada, o layout não será movido para cima, mas ocultará meu texto de fundo que estou escrevendo corretamente. Então, após 24 horas de pesquisa contínua, encontrei essa fonte e ela resolveu meu problema.
fonte
Pode ser tarde, mas quero acrescentar algumas coisas. No Android Studio Versão 4.0.1 e Gradle Versão 6.1.1, o
windowSoftInputMode
não funcionará conforme o esperado se você estiver adicionando os seguintes sinalizadores em sua Atividade:Depois de perder muito tempo, encontrei esse truque. Para que
adjustResize
ouAdjustPan
ou qualquer atributo dewindowSoftInputMode
funcione corretamente, você precisa removê-lo da sua atividade.fonte