Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Align Parent Bottom + Bottom margin

I've used a relative layout and I want to set the button at bottom of the screen, However this puts it all the down to the bottom and I would like to have some margin so it there's some space between the end of the screen/view and the button. However whatever I do the button margin just doesn't do anything on 2.1+ for some reason. The relative layout contains a background so I cant but the margin on that.

Anyone know a fix for this?

<?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> 
like image 516
Jacob Avatar asked Nov 18 '12 15:11

Jacob


2 Answers

You can simply add a padding to the RelativeLayout instead of a margin to the Button, e.g. android:paddingBottom="15dp".

In general I'm always testing my layout in the Exclipse preview using API Level 8 setting. This gives quite accurate results for most devices, including ICS and JB.

like image 77
André Avatar answered Oct 07 '22 12:10

André


The other thing you can do is put a View that's aligned to the bottom of the RelativeLayout, and set its height to the bottom margin you would want to use (or simply specify a value for layout_marginBottom) like so:

 <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> 

This example fills the RelativeLayout with the ImageView, and positions a TextView over the ImageView.

like image 39
ajacian81 Avatar answered Oct 07 '22 12:10

ajacian81