Search code examples
androidxmlandroid-layoutandroid-studioandroid-linearlayout

How to center a group of widgets in Android Studio?


I'm new to Android Studio and mobile app developing and I'm trying to create the layout of an activity. My desire is to include in order: (1) a picture (2) a big text (2) a smaller text, grouped vertically and centered on the screen. I tried using android:layout_gravity="center" but it centers the group of widgets only horizontally. How to make it center in both ways? Here's the relative code:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/my_image_id"
            android:src="@drawable/my_image"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:text="@string/first_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:layout_gravity="center_horizontal"
            android:textSize="40sp"/>

        <TextView
            android:text="@string/second_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:layout_gravity="center_horizontal"
            android:textSize="15sp"/>
    </LinearLayout>

</LinearLayout>

Solution

  • Added android:gravity="center" to parent LinearLayout

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    
    
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">
    
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/my_image_id"
            android:src="@drawable/ic_launcher"
            android:layout_gravity="center_horizontal" />
    
        <TextView
            android:text="@string/first_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:layout_gravity="center_horizontal"
            android:textSize="40sp"/>
    
        <TextView
            android:text="@string/second_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:layout_gravity="center_horizontal"
            android:textSize="15sp"/>
    </LinearLayout>
    
    </LinearLayout>