How do I align views at the bottom of the screen? How do I align views at the bottom of the screen? xml xml

How do I align views at the bottom of the screen?


The modern way to do this is to have a ConstraintLayout and constrain the bottom of the view to the bottom of the ConstraintLayout with app:layout_constraintBottom_toBottomOf="parent"

The example below creates a FloatingActionButton that will be aligned to the end and the bottom of the screen.

<android.support.constraint.ConstraintLayout   xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:app="http://schemas.android.com/apk/res-auto"   xmlns:tools="http://schemas.android.com/tools"   android:layout_height="match_parent"   android:layout_width="match_parent"><android.support.design.widget.FloatingActionButton    android:layout_height="wrap_content"    android:layout_width="wrap_content"    app:layout_constraintBottom_toBottomOf="parent"    app:layout_constraintEnd_toEndOf="parent" /></android.support.constraint.ConstraintLayout>

For reference, I will keep my old answer.

Before the introduction of ConstraintLayout the answer was a relative layout.


If you have a relative layout that fills the whole screen you should be able to use android:layout_alignParentBottom to move the button to the bottom of the screen.

If your views at the bottom are not shown in a relative layout then maybe the layout above it takes all the space. In this case you can put the view, that should be at the bottom, first in your layout file and position the rest of the layout above the views with android:layout_above. This enables the bottom view to take as much space as it needs, and the rest of the layout can fill all the rest of the screen.


In a ScrollView this doesn't work, as the RelativeLayout would then overlap whatever is in the ScrollView at the bottom of the page.

I fixed it using a dynamically stretching FrameLayout :

<ScrollView     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_height="match_parent"     android:layout_width="match_parent"    android:fillViewport="true">    <LinearLayout         android:id="@+id/LinearLayout01"        android:layout_width="match_parent"         android:layout_height="match_parent"        xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical">                <!-- content goes here -->                <!-- stretching frame layout, using layout_weight -->        <FrameLayout            android:layout_width="match_parent"             android:layout_height="0dp"            android:layout_weight="1">        </FrameLayout>                <!-- content fixated to the bottom of the screen -->        <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"            android:orientation="horizontal">                                   <!-- your bottom content -->        </LinearLayout>    </LinearLayout></ScrollView>


You can keep your initial linear layout by nesting the relative layout within the linear layout:

<LinearLayout    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <TextView android:text="welcome"         android:id="@+id/TextView"         android:layout_width="fill_parent"         android:layout_height="wrap_content">    </TextView>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <Button android:text="submit"             android:id="@+id/Button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"            android:layout_alignParentBottom="true"            android:layout_alignParentRight="true">        </Button>        <EditText android:id="@+id/EditText"             android:layout_width="match_parent"             android:layout_height="wrap_content"            android:layout_toLeftOf="@id/Button"            android:layout_alignParentBottom="true">        </EditText>    </RelativeLayout></LinearLayout>