0

I have created menus with GridLayout. It currently looks like this:

enter image description here

It looks ugly because item which has biggest height value is different from other item's height. What I want is to adjust all item's height based on item which has the biggest height value, so all items is in same height. How I can achieve this?

Here is my layout code

 <GridLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:columnCount="2">

            <androidx.cardview.widget.CardView
                android:id="@+id/btn_info1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="1"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/btn_info2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="2"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/btn_info3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="3"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/btn_info4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="ITEM WITH MAX HEIGHT"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

            </androidx.cardview.widget.CardView>
        </GridLayout>

Sera Lima
  • 61
  • 3

3 Answers3

0

If you are willing to use ConstraintLayout then Barrier does exactly what you are looking for , i have tried it and it works.

A Barrier references multiple widgets as input, and creates a virtual guideline based on the most extreme widget on the specified side. For example, a left barrier will align to the left of all the referenced views.

Here is a good tutorial link

Dishonered
  • 8,449
  • 9
  • 37
  • 50
0

Have a look into this, GridView rows overlapping: how to make row height fit the tallest item? Also you can set gravity = center in grid layout to align all items to middle. if any item height expected goes beyond some limit place it inside scroll view.

Pradeep
  • 261
  • 2
  • 7
0

enter image description here

Here is your layout where your issue was resolved. Just copy past this line in your layout file.

 <GridLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:columnCount="2">

        <androidx.cardview.widget.CardView
                android:id="@+id/btn_info1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:minLines="2"        android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="1"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

        </androidx.cardview.widget.CardView>

        <androidx.cardview.widget.CardView
                android:id="@+id/btn_info2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:minLines="2"      android:padding="5dp"
                    android:text="2"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

        </androidx.cardview.widget.CardView>

        <androidx.cardview.widget.CardView
                android:id="@+id/btn_info3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:minLines="2"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="3"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

        </androidx.cardview.widget.CardView>

        <androidx.cardview.widget.CardView
                android:id="@+id/btn_info4"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_margin="5dp"
                android:layout_columnWeight="1"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground">

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:padding="5dp"
                    android:text="ITEM WITH MAX HEIGHT"
                    android:textAlignment="center"
                    android:textSize="24sp"
                    tools:ignore="HardcodedText" />

        </androidx.cardview.widget.CardView>
    </GridLayout>
Prashant Arvind
  • 2,139
  • 20
  • 27