Eu tenho um <ScrollView>
layout:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/input_one"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_two"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<EditText
android:id="@+id/input_three"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="number" >
<Button
android:id="@+id/ok_btn"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:text="@string/ok_str" />
</LinearLayout>
</ScrollView>
Como você pode ver acima, o layout simples consiste em três campos de entrada e um botão "Ok".
Eu executo meu aplicativo com o layout acima, quando toco no primeiro campo de entrada ( @+id/input_one
), o teclado virtual aparecerá na parte inferior da tela, ele oculta o terceiro campo de entrada e o botão "Ok".
Desde que eu uso <ScrollView>
, pensei que posso rolar a página para cima para ver o terceiro campo de entrada e o botão "Ok" que estão ocultos pelo teclado virtual, mas a página não é rolável . Por quê? Como me livrar disso? basicamente, gostaria de ver todos os campos de entrada e o botão "Ok", até mesmo o teclado virtual aparecer.
Respostas:
Corrigi o problema definindo o seguinte atributo em
<activity>
de AndroidManifest.xmlfonte
Ok, já procurei por várias horas para encontrar o problema e o encontrei.
Nenhuma das mudanças gostou
fillViewport="true"
ouandroid:windowSoftInputMode="adjustResize"
me ajudou.Eu uso o Android 4.4 e este é o grande erro :
De alguma forma, os temas Fullscreen evitam que os ScrollViews rolem quando o SoftKeyboard estiver visível.
No momento, acabei usando isso:
Não sei como me livrar da barra superior do sistema com a hora e a exibição da bateria, mas pelo menos entendi o problema.
Espero que isso ajude outras pessoas que tenham o mesmo problema.
EDIT: Eu tenho uma pequena solução alternativa para o meu caso, então eu postei aqui :
Não tenho certeza se isso vai funcionar para você, mas com certeza vai ajudá-lo a entender e esclarecer algumas coisas.
EDIT2: Aqui está mais um bom tópico que vai te ajudar a ir na direção certa ou até mesmo resolver seu problema.
fonte
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Para mim a única coisa que funciona é colocar na atividade no manifesto este atributo:
Para não mostrar o teclado ao abrir a atividade e não sobrepor a parte inferior da visualização.
fonte
coloque isso dentro de seu manifesto como este em modo sem tela cheia
em seu manifesto
fonte
ScrollView
, mas aRelativeLayout
que contém aLinearLayout
que contém aScrollView
Em sua propriedade
Manifest
definirwindowSoftInputMode
:fonte
Veja isso.
fonte
Isso só funcionou para mim:
fonte
Além disso, se você quiser fazer isso programaticamente, basta adicionar a linha abaixo ao onCreate da atividade.
fonte
Você pode tentar usar o seguinte código para resolver seu problema:
fonte
bem, a resposta mais simples que tentei é apenas remover seu código, o que faz a atividade ficar em tela cheia. Eu tinha um código como este que era responsável por fazer minha atividade ir para tela cheia:
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT) {
Acabei de remover meu código e ele funciona perfeitamente bem, embora se você quiser fazer isso com a tela inteira ligada, você terá que tentar alguns outros métodos
fonte