Can you center a Button in RelativeLayout?

AndroidLayout

Android Problem Overview


I'm trying to center a button in relative layout, is this possible? I've tried the Gravity and Orientation functions but they don't do anything.

Android Solutions


Solution 1 - Android

Try

android:layout_centerHorizontal="true"

Exactly like this, it works for me:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="#ff0000">
    
    <Button
        android:id="@+id/btn_mybutton"
        android:layout_height="wrap_content"
        android:layout_width="124dip"
        android:layout_marginTop="5dip"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>

Solution 2 - Android

You can use CENTER_IN_PARENT for relative layout.

Add android:layout_centerInParent="true" to element which you want to center in the RelativeLayout

Solution 3 - Android

Arcadia, just try the code below. There are several ways to get the result you're looking for, this is one of the easier ways.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/relative_layout"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent"
	android:gravity="center">

	<Button
		android:id="@+id/the_button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="Centered Button"/>
</RelativeLayout>

Setting the gravity of the RelativeLayout itself will affect all of the objects placed inside of it. In this case, it's just the button. You can use any of the gravity settings here, of course (e.g. center_horizontal, top, right, and so on).

You could also use this code below:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/relative_layout"
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent">

	<Button
		android:id="@+id/the_button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="Centered Button"
		android:layout_centerInParent="true"/>
</RelativeLayout>

Solution 4 - Android

Summarized

Adding:

android:layout_centerInParent="true"

just works on RelativeLayout, if one of the following attributes is also set for the view:

android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"

which alignes the child view to the parent view. The "center" is based on the axis of the alignement you have chosen:

left/right -> vertical

top/bottom -> horizontal

Setting the gravity of childs/content inside the view:

android:gravity="center"

is centering the child inside the parent view in any case, if there is no alignment set. Optional you can choose:

<!-- Axis to Center -->
android:gravity="center_horizontal"
android:gravity="center_vertical"

<!-- Alignment to set-->
android:gravity="top"
android:gravity="bottom"
android:gravity="left"
android:gravity="right"
android:gravity="fill"
...

Then there is:

android:layout_gravity="center"

which is centering the view itself inside it's parent

And at last you can add the following attribute to the parents view:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

Solution 5 - Android

Its easy, don't align it to anything

<Button
    android:id="@+id/the_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true"
    android:text="Centered Button"/>

Solution 6 - Android

Use the attribute android:centerInParent="true" inside a view , when you want to center the view in Relative layout.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NWE"
        android:textSize="30dp"/>
</RelativeLayout>

Solution 7 - Android

To center align in one of the direction use android:layout_centerHorizontal="true" or android:layout_centerVertical="true" in the child layout

Solution 8 - Android

It's really easy. Try the code below,

<RelativeLayout
    android:id="@+id/second_RL"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/first_RL"
    android:background="@android:color/holo_blue_bright"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</RelativeLayout>

Solution 9 - Android

It's pretty simple, just use Android:CenterInParent="true" to center both in horizontal and vertical, or use Android:Horizontal="true" to center in horizontal and Android:Vertical="true"

And make sure you write all this in RelaytiveLayout

Solution 10 - Android

Removing any alignment like android:layout_alignParentStart="true" and adding centerInParent worked for me. If the "align" stays in, the centerInParent doesn't work

Solution 11 - Android

you must have aligned it to left or right of parent view

don't use any of these when using android:centerInParent="true" codes:-

android:layout_alignParentLeft="true"

android:layout_alignParentLeft="true"

android:layout_alignRight=""

etc.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionArcadiaView Question on Stackoverflow
Solution 1 - AndroidShadowGodView Answer on Stackoverflow
Solution 2 - AndroidJosnidhinView Answer on Stackoverflow
Solution 3 - AndroidKevin CoppockView Answer on Stackoverflow
Solution 4 - AndroidPwnstarView Answer on Stackoverflow
Solution 5 - AndroidSheychanView Answer on Stackoverflow
Solution 6 - AndroidKarthikKPNView Answer on Stackoverflow
Solution 7 - AndroidkarmaView Answer on Stackoverflow
Solution 8 - AndroidPrimeshView Answer on Stackoverflow
Solution 9 - AndroidKayn RyanView Answer on Stackoverflow
Solution 10 - Androidal881View Answer on Stackoverflow
Solution 11 - AndroidDivy sindhuView Answer on Stackoverflow