Search code examples
androidgridgrid-layoutandroid-gridlayout

Android Studio: Buttons in Grid Layout change size in emulator


enter image description here

I don't know how to make all button sizes the same... I tried making grid to wrap content, it worked, but button sizes were a bit different depending on the number of characters. Does anyone know how to format this stuff?

I tried adding number of rows and columns, gravity, etc, but it didn't change a thing.

Here is my XML code:

<GridLayout
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <Button
        android:text="Hello"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/hello"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="Do you speak &#10; English?"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1"
        android:layout_row="0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/english"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="Good Evening"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0"
        android:layout_row="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/goodEvening"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="Please"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1"
        android:layout_row="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/please"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="My name is"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0"
        android:layout_row="2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/name"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="Welcome"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1"
        android:layout_row="2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/welcome"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="How are you?"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0"
        android:layout_row="3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/howAreYou"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

    <Button
        android:text="I live in"
        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1"
        android:layout_row="3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/iLiveIn"
        android:onClick="buttonTapped"
        android:gravity="center"
        android:layout_gravity="fill" />

</GridLayout>

Solution

  • As you can see in this document . android:layout_gravity="fill" will

    Grow the horizontal and vertical size of the object if needed so it completely fills its container

    and here your container size is match_parent.So it is filling your layout . Now make your container(GridLayout) wrap_content , otherwise use gravity attribute properly