Search code examples
androidarraysbuttonandroid-linearlayout

arrange buttons in an array in a layout


buttons to be arranged in center of the layoutI have four buttons in a screen which i want to arrange in the center of the screen, and nine buttons in the next screen which should be arranged in the center of the screen and so on.. i used linear layout but iam not getting the desired layout. below is my xml..

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.go123.MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingStart="10dip"
android:paddingEnd="10dip"
android:paddingLeft="10dip"
android:paddingRight="10dip">

    <Button
        android:id="@+id/button0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Go 1,2,3.." />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
    android:text="Go 1,2,3.." />

       <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button0"
    android:text="Go 1,2,3.." />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:text="Go 1,2,3.." />

I also tried to use Android Flexbox Layout but without success..

All I got is this image..Only three buttons shown!


Solution

  • SCREEN ONE:

    1. Use RelativeLayout as root layout and add child vertical LinearLayout and make it center aligned by using attribute android:layout_centerInParent="true".

    2. Add another two horizontal LinearLayout inside above LinearLayout.

    3. Put Button's inside horizontal LinearLayout's.

    <?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">
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:orientation="vertical">
    
            <!-- ROW 1 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 1"/>
    
                <Button
                    android:id="@+id/button2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 2"/>
    
            </LinearLayout>
    
            <!-- ROW 2 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/button3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 3"/>
    
                <Button
                    android:id="@+id/button4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 4"/>
    
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
    

    OUTPUT:

    enter image description here

    SCREEN_TWO:

    1. Use RelativeLayout as root layout and add child vertical LinearLayout and make it center aligned by using attribute android:layout_centerInParent="true".

    2. Add another three horizontal LinearLayout inside above LinearLayout.

    3. Put Button's inside horizontal LinearLayout's.

    <?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">
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:orientation="vertical">
    
            <!-- ROW 1 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 1"/>
    
                <Button
                    android:id="@+id/button2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 2"/>
    
                <Button
                    android:id="@+id/button3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 3"/>
    
            </LinearLayout>
    
            <!-- ROW 2 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/button4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 4"/>
    
                <Button
                    android:id="@+id/button5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 5"/>
    
                <Button
                    android:id="@+id/button6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 6"/>
    
            </LinearLayout>
    
            <!-- ROW 3 -->
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <Button
                    android:id="@+id/button7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 7"/>
    
                <Button
                    android:id="@+id/button8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 8"/>
    
                <Button
                    android:id="@+id/button9"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button 9"/>
    
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>
    

    OUTPUT:

    enter image description here

    FYI, you can change Button heights as per your needs.