Tengo una página bastante simple entrada en mi aplicación para Android, que contiene una cabecera, nombre de usuario de Vista de Texto, TextView contraseña, botón de inicio de sesión y un pie de imagen:Cómo evitar cambios en la IU de Android, cuando el teclado está activo o se cambia la orientación?
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff" >
<!-- Header Starts -->
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
>
<!-- Logo Start -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:src="@drawable/header" />
<!-- Logo Ends -->
</LinearLayout>
<!-- Header Ends -->
<!-- Footer Start -->
<LinearLayout android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="90dip"
android:layout_alignParentBottom="true"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:src="@drawable/footer" />
</LinearLayout>
<!-- Footer Ends -->
<!-- Login Form -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip"
android:layout_below="@+id/header"
>
<!-- Application Name Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:gravity="center"
android:padding="10dip"
android:textSize="25dp"
android:textStyle="bold"
/>
<!-- Username Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="User Name"
android:textColor="#372c24" />
<EditText
android:id="@+id/username"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_marginTop="5dip"
android:singleLine="true" />
<!-- Password Label -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Password"
android:textColor="#372c24" />
<EditText
android:id="@+id/password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_marginTop="5dip"
android:password="true"
android:singleLine="true" />
<!-- Login button -->
<Button
android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="Logon" />
</LinearLayout>
<!-- Login Form Ends -->
</RelativeLayout>
</ScrollView>
Tengo dos problemas creo que están relacionados:
- Cuando el teclado está arriba, y me desplazo hacia abajo, veo que el pie de página de la imagen "se esconde" detrás del botón de inicio de sesión, en lugar de permanecer debajo de él.
- Lo mismo sucede cuando la pantalla está orientada horizontalmente.
Las cosas que he intentado:
- Ajuste en la actividad
android:windowSoftInputMode="adjustPan"
, pero yo quiero ser capaz de desplazarse hacia abajo cuando aparezca el teclado, oandroid:windowSoftInputMode="adjustResize"
, o cualquier otro parámetro para el caso. - Configuración
marginBottom
en el botón.
Ninguno de los dos funcionó. Agradecería cualquier ayuda.
¿También quisiste decir que debería escribir algo en el método onConfigurationChanged? Porque no sé qué cambiar cuando se cambia la configuración ... y solo escribir tu sugerencia no funciona ... Gracias – MichalK