A atividade principal do meu aplicativo Android se parece com isso:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:orientation="vertical"
android:paddingLeft="60dp"
android:paddingTop="53dp" >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/billAmountText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/billAmount_string"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/billAmount"
android:layout_width="173dp"
android:layout_height="wrap_content"
android:layout_below="@id/billAmountText"
android:layout_marginTop="3dp"
android:inputType="numberDecimal" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Para garantir que a imagem de fundo (definida no primeiro RelativeLayout) não seja comprimida quando o teclado aparecer, defini android:windowSoftInputMode="stateVisible|adjustPan
no arquivo de manifesto da minha atividade. Tudo bem com o plano de fundo e layout agora, nada é redimensionado.
Mas o problema é que meu ScrollView não faztrabalho agora porque eu suponho que o sistema acha que a janela não precisa ser redimensionada devido a minha modificação acima no manifesto - então o ScrollView não está ativado. O oposto acontece quando eu tomo android:windowSoftInputMode="stateVisible|adjustPan
fora, a rolagem funciona, mas o fundo fica comprimido quando o teclado aparece.
Existe alguma maneira de codificá-lo para que meu fundo não fique espremido, e meu ScrollView ainda funciona? Obrigado!
Respostas:
3 para resposta № 1Tente usar em sua atividade a propriedade windowSoftInputMode
com os seguintes valores:
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
Eu não sei se é necessário, mas você pode tentar adicionar ao seu layout ScrollView
marcar o fillViewPort
para true
. Então deve parecer algo que eu mostro abaixo:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<!-- Other Views -->
</ScrollView>
Deixe-me saber sobre o seu progresso.
1 para resposta № 2
Em sua rolagem coloque um layout relativo, criança 0é uma visualização de imagem e criança 1 é o seu conteúdo. Use a imageview para sua imagem de plano de fundo (src) em vez do plano de fundo da vista de rolagem. A imageview respeitará scaleTypes, enquanto o plano de fundo de um layout não.