Search code examples
androidandroid-layoutalignmentandroid-gridlayout

gridlayout 2 columns center-horizontal


I want to make layout consists of 2 columns that have equal width and elements in the column are centered

Code

    <?xml version="1.0" encoding="utf-8"?>

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#75ddff"
    android:columnCount="2"
    android:layout_gravity="center"
    tools:context="com.example.demo.MainActivity">


    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/calculator_view"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:layout_row="0"
        android:src="@drawable/calc"
        app:civ_border_color="#00C3C9"
        app:civ_border_width="0dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal|center_horizontal"
        android:layout_row="1"
        android:gravity="center"
        android:text="CALC"
        android:textSize="25dp" />


    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_row="0"
        android:layout_column="1"
        android:layout_columnWeight="1"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:src="@drawable/statst"
        app:civ_border_color="#ffffff"
        app:civ_border_width="0dp" />

    <TextView
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal|center_horizontal"
        android:layout_row="1"
        android:gravity="center"
        android:text="Statistics"
        android:textSize="25dp" />

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:layout_row="2"
        android:src="@drawable/reporting_icon1"
        app:civ_border_color="#00C3C9"
        app:civ_border_width="0dp" />

    <TextView
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal|center_horizontal"
        android:layout_row="3"
        android:gravity="center"
        android:text="History"
        android:textSize="25dp" />

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_row="2"
        android:layout_column="1"
        android:layout_columnWeight="1"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:src="@drawable/hashtag"
        app:civ_border_color="#ffffff"
        app:civ_border_width="0dp" />

    <TextView
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal|center_horizontal"
        android:layout_row="3"
        android:gravity="center"
        android:text="Codes"
        android:textSize="25dp" />

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:layout_row="4"
        android:layout_columnSpan="1"
        android:src="@drawable/documents"
        app:civ_border_color="#00C3C9"
        app:civ_border_width="0dp" />

    <TextView
        android:layout_width="110dp"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal|center_horizontal"
        android:layout_row="5"
        android:gravity="center"
        android:text="Plans"
        android:textSize="25dp" />

</GridLayout>

Result the two columns are not centered enter image description here

I have used CircleImageview

dependencies {
    ...
    compile 'com.android.support:support-v4:23.1.1'
    compile 'de.hdodenhof:circleimageview:2.0.0'
    compile 'com.android.support:design:23.1.1'
}

Solution

  • <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        orientation="horizontal">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            orientation="vertical">
        </LinearLayout>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            orientation="vertical">
        </LinearLayout>
    </LinearLayout>
    

    Two inner linear layout will have the exactly the same width. Because of layout_weight="1". This is your two columns.