Disposición relativa de Android con pie de página pegajoso

Soy relativamente nuevo en el desarrollo de Android y estoy teniendo dificultades para armar una determinada interfaz. He mirado a través de muchas preguntas similares, pero ninguno de ellos me da la respuesta que estoy buscando.

Quiero crear una interfaz XML como la siguiente:

Introduzca aquí la descripción de la imagen

Quiero un LinearLayout que actúa como un pie de página pegajoso que contendrá dos botones. Esta parte se alineará siempre a la parte inferior y siempre será 60dp alto. El RelativeLayout sería entonces en la parte superior del pie de página, pero su altura debe escalar dependiendo del tamaño de la pantalla.

He intentado lo siguiente:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".DartboardActivity"> <RelativeLayout android:id="@+id/game_layout" android:layout_width="match_parent" android:layout_height="506dp" android:background="@drawable/background" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ImageView android:id="@+id/Dartboard" android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@string/desc_dartboard" android:src="@drawable/dartboard" /> <hhs.week3.dartboard.VerticalSeekBar android:id="@+id/seekBarVertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="bottom" android:thumb="@drawable/thumbhorizontal" android:layout_marginBottom="40dp" /> <SeekBar android:id="@+id/seekBarHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:thumb="@drawable/thumbhorizontal" /> </RelativeLayout> <LinearLayout android:id="@+id/buttons" android:layout_width="match_parent" android:layout_height="60dp" android:background="#333"> <Button android:id="@+id/fire" style="@style/button" android:layout_width="0dp" android:layout_height="match_parent" android:layout_margin="5dp" android:text="@string/fire" /> <Button android:id="@+id/settings" style="@style/button" android:layout_width="0dp" android:layout_height="match_parent" android:layout_margin="5dp" android:text="@string/settings" /> </LinearLayout> </LinearLayout> 

Tengo que trabajar medio decentemente, pero me obliga a dar el RelativeLayout poco una altura fija, lo que se ve bien en mi teléfono, pero no en otros.

¿Cómo puedo abordar esto mejor?

4 Solutions collect form web for “Disposición relativa de Android con pie de página pegajoso”

Utilice el mecanismo de LinearLayout layout_weight para asignar todo el espacio restante a su RelativeLayout :

 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" ... /> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" ... /> </LinearLayout> 

Prueba el siguiente código

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".DartboardActivity" > <RelativeLayout android:id="@+id/game_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/buttons" android:layout_alignParentTop="true" android:background="@drawable/ic_launcher" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > </RelativeLayout> <LinearLayout android:id="@+id/buttons" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:background="#333" android:orientation="vertical" > </LinearLayout> </RelativeLayout> 

LinearLayout y lo reemplazé con RelativeLayout . Esto le permitirá establecer su stick LinearLayout en la parte inferior.

Pude conseguir el mismo resultado usando código bajo. Básicamente, la disposición principal es una disposición lineal y el primer elemento secundario es una vista de desplazamiento para poder comprimir su contenido cuando se muestra el teclado. También tenga en cuenta el uso del androide: layout_height = "0dp" y android: layout_weight = "1" utilizado con scrollview

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/wrap" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ScrollView android:id="@+id/wrap2" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <LinearLayout android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> </ScrollView> <FrameLayout android:id="@+id/buttonsPanel" android:layout_width="match_parent" android:layout_height="40dp" android:background="#333" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="action buttons" /> </FrameLayout> </LinearLayout> 

Prueba esto

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".DartboardActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:orientation="vertical" android:layout_weight="1" android:background="@drawable/background" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <ImageView android:id="@+id/Dartboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:contentDescription="@string/desc_dartboard" android:src="@drawable/dartboard" android:adjustViewBounds="true"/> <hhs.week3.dartboard.VerticalSeekBar android:layout_marginTop="10dp" android:id="@+id/seekBarVertical" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:thumb="@drawable/thumbhorizontal"/> <SeekBar android:id="@+id/seekBarHorizontal" android:layout_width="match_parent" android:layout_marginTop="10dp" android:layout_height="wrap_content" android:thumb="@drawable/thumbhorizontal" /> </LinearLayout> <LinearLayout android:id="@+id/buttons" android:layout_width="match_parent" android:layout_height="60dp" android:background="#333333"> <Button android:id="@+id/fire" android:layout_width="0dp" android:layout_height="match_parent" android:layout_margin="5dp" android:layout_weight="1" android:text="@string/fire"/> <Button android:id="@+id/settings" android:layout_width="0dp" android:layout_height="match_parent" android:layout_margin="5dp" android:layout_weight="1" android:text="@string/settings"/> </LinearLayout> </LinearLayout> 
  • Android: ¿Cómo inyectar un elemento <string> en otro elemento <string> en XML?
  • Android: propósito de usoLevel en etiqueta de forma
  • Tamaño de imagen de mapa de bits de Android en xml
  • ¿Cómo inserto texto dentro de un rectángulo redondeado en la vista de Android?
  • Cómo convertir el objeto de cursor en XML o JSON en android
  • ¿Establecer un fondo a los botones en un diálogo?
  • ¿Por qué mi EditText se expandió horizontalmente o verticalmente después de configurar Width and Height como wrap_content en android?
  • * Cualquier * forma de vincular Android / dibujable gráficos a / activos?
  • TextView no se desplaza suavemente
  • A xmlns: android, ¿cómo funciona eso realmente?
  • Almacenamiento de datos de Android en xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.