Android: Alinear fondo principal + margen inferior
He utilizado un diseño relativo y quiero configurar el botón en la parte inferior de la pantalla, Sin embargo, esto pone todo el abajo a la parte inferior y me gustaría tener un margen por lo que hay algún espacio entre el final de la pantalla / Vista y el botón. Sin embargo lo que hago el margen del botón no hace nada en 2.1 + por alguna razón. El diseño relativo contiene un fondo, así que no puedo pero el margen en eso.
Alguien sabe una solución para esto?
- Disposición relativa de Android align parent right
- Cómo anclar un botón en la parte inferior de un diseño relativo en android
- No lleve el botón al primer plano al hacer clic
- ¿Cómo puedo eliminar mediante programación una regla existente que se definió en XML?
- Android RelativeLayout programmatically set centerInParent
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="0dp" android:background="@drawable/background" > <Button android:id="@+id/confirm_mobile_button_next" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_alignParentBottom="true" android:layout_alignParentLeft="false" android:layout_centerHorizontal="false" android:layout_centerInParent="false" android:layout_margin="15dp" android:background="@drawable/button_shape_selector" android:paddingLeft="10dip" android:paddingRight="10dip" android:text="@string/confirm_mobile_no_continue" android:textColor="@color/white" android:textStyle="bold" /> </RelativeLayout>
- RelativeLayout dentro de LinearLayout?
- Cómo obtener datos de EditText creado dinámicamente con LayoutInflater en android?
- ¿Cuál es la equivalencia iOS de Android RelativeLayout / LinearLayout?
- ¿Cómo puedo hacer que `View` llene un` RelativeLayout`?
- eliminar inmuebles extra de la parte superior del diálogo personalizado
- ¿Por qué mi diseño relativo ocupa el ancho de pantalla completa?
- ¿Qué pasa con setScaleX / setScaleY?
- Disposición relativa de Android con pie de página pegajoso
Simplemente puede agregar un relleno a RelativeLayout en lugar de un margen al botón, por ejemplo android:paddingBottom="15dp"
.
En general, siempre estoy probando mi diseño en la vista previa de Exclipse utilizando la configuración de Nivel de API 8. Esto da resultados bastante precisos para la mayoría de los dispositivos, incluyendo ICS y JB.
La otra cosa que puedes hacer es poner una View
que esté alineada a la parte inferior de RelativeLayout
y establecer su altura al margen inferior que deseas usar (o simplemente especificar un valor para layout_marginBottom
) así:
<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/some_image" android:adjustViewBounds="true" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Some Overlay" android:padding="3dip" android:gravity="center_vertical|center_horizontal" android:layout_above="@+id/empty_view" android:layout_marginBottom="35dip" /> <View android:id = "@+id/empty_view" android:layout_height = "30dip" android:layout_width = "match_parent" android:visibility="invisible" android:layout_alignParentBottom="true" /> </RelativeLayout>
Este ejemplo rellena RelativeLayout
con ImageView
y posiciona un TextView
sobre ImageView
.
Yu puede usar el atributo translateY
translateY="-16dp"
Código final
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="0dp" android:background="@drawable/background"> <Button android:id="@+id/confirm_mobile_button_next" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_alignParentBottom="true" android:layout_alignParentLeft="false" android:layout_centerHorizontal="false" android:layout_centerInParent="false" android:layout_margin="15dp" android:background="@drawable/button_shape_selector" android:paddingLeft="10dip" android:paddingRight="10dip" android:text="@string/confirm_mobile_no_continue" android:textColor="@color/white" android:textStyle="bold" android:translateY="-16dp" /> </RelativeLayout>
Creo que la mejor manera es establecer android: layout_alignParentBottom en XML y luego en código java detrás:
Button confirm_mobile_button_next = (Button)findViewById(R.id.confirm_mobile_button_next)
y
confirm_mobile_button_next.setTransitionY(-THE_VALUE) or setTransitionX(-THE_VALUE)
Desde que me topé con este tema y no vi respuestas adecuadas a mi situación empecé a pensar durante medio segundo y lo resolví estableciendo un margen negativo en la vista dentro del ejemplo de RelativeLayout:
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:layout_marginTop="-8dp" android:layout_marginStart="-8dp"> </RelativeLayout>
Esto debería ser útil para algunas personas.
Creo que la mejor manera es establecer:
<... android:layout_alignParentBottom="true" />
Luego en código java detrás:
Button confirm_mobile_button_next = (Button)findViewById(R.id.confirm_mobile_button_next) confirm_mobile_button_next.setTransitionY(-THE_VALUE) or setTransitionX(-THE_VALUE)
Puede utilizar un ViewGroup (por ejemplo, FrameLayout o LinearLayout) para ajustar la vista. Establezca alignParentBottom en el ViewGroup exterior, entonces marginBottom puede trabajar en la vista interna.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:id="@+id/fl_layout" android:layout_alignParentBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_layout" android:text="hello world" android:layout_marginBottom="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout> </RelativeLayout>
Sólo solución de trabajo sugerido por @franny zhao está a continuación.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:id="@+id/fl_layout" android:layout_alignParentBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_layout" android:text="hello world" android:layout_marginBottom="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout> </RelativeLayout>
Si agrega relleno a la vista inferior alineada como lo sugieren otros, el fondo de vista también se extenderá. Si tiene un fondo de color, la vista se verá como si estuviera pegada al fondo. El acolchado y el margen son completamente diferentes, el relleno es parte de la vista, pero el margen deja espacio entre las vistas.
Intente de esta manera:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="17dp" android:text="Button" />
Aquí hay otra alternativa. Si desea establecer el margen del niño en lugar del relleno de los padres, debe establecer el valor de android:layout_marginTop
al doble del margen deseado y, a continuación, establecer el android:layout_centerVertical
a true. Margen superior se le da el doble del valor deseado para compensar el margen inferior. De esta forma, tendrá un margen superior e inferior igual al de la vista secundaria.
<Button android:id="@+id/confirm_mobile_button_next" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_alignParentBottom="true" android:layout_alignParentLeft="false" android:layout_centerVertical="true" android:layout_centerInParent="false" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="30dp" android:background="@drawable/button_shape_selector" android:paddingLeft="10dip" android:paddingRight="10dip" android:text="@string/confirm_mobile_no_continue" android:textColor="@color/white" android:textStyle="bold" />
Te dará el mismo resultado.
- Con el estudio de Android no se encontró jvm, JAVA_HOME se ha configurado
- Compilación de error en "Usar el ejemplo de inicio de sesión de Facebook"