Search code examples
androidandroid-studioandroid-cardviewandroid-scrollviewandroid-gridlayout

cards are shrinking when trying to add extra cards to the grid layout


In the android studio, when I try to add more cards and change the layout to scrollview, the window instead of scrolling shrinks the cards to fit the entire grid in the same window, whereas I want it to scroll and show both the image view and text view clearly in all the cards(text view below image view)

I know i am missing something very fundamental, but not able to get through.Please help. this is my XML code,

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/jhyti"
        android:weightSum="10"

    >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_weight="2"
        android:layout_height="0dp">

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="294dp"
            android:layout_height="89dp"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginEnd="46dp"
            android:gravity="center_vertical"
            android:src="@drawable/logo" />

    </RelativeLayout>

    <GridLayout
        android:columnCount="2"
        android:rowCount="3"
        android:alignmentMode="alignMargins"
        android:columnOrderPreserved="false"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:padding="14dp">

        <!--ROW 1 - -!>

        <!- -CARD 1-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock1" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 1"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="18sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>

        <!--CARD 2-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock2" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 2"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>


        <!--ROW 2 - -!>

         <!- -CARD 1-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock3" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 3"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>

        <!--CARD 2-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock4" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 4"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>


        <!--ROW 3 - -!>

        <!- -CARD 1-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock5" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 5"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>

        <!--CARD 2-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock6" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 6"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>



        <!--ROW 7 - -!>

         <!- -CARD 1-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock1" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 7"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>

        <!--CARD 2-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp"

            >
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/stock2" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="CHAPTER 2"
                    android:textAlignment="center"
                    android:textColor="@color/black"
                    android:textSize="12sp"
                    android:textStyle="bold|italic" />
            </LinearLayout>


        </android.support.v7.widget.CardView>




    </GridLayout>

    </LinearLayout>

</ScrollView>

Solution

  • Remove weight from your Relative and GridLayout.

    Set height to android:layout_height="wrap_content"

      <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/jhyti"
            android:orientation="vertical">
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="294dp"
                    android:layout_height="89dp"
                    android:layout_alignParentEnd="true"
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="46dp"
                    android:gravity="center_vertical"
                    android:src="@drawable/logo" />
    
            </RelativeLayout>
    
            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:alignmentMode="alignMargins"
                android:columnCount="2"
                android:columnOrderPreserved="false"
                android:padding="14dp">
    
                <!--ROW 1 - -!>
    
                <!- -CARD 1-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock1" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 1"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="18sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
                <!--CARD 2-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock2" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 2"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
    
                <!--ROW 2 - -!>
    
                 <!- -CARD 1-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock3" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 3"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
                <!--CARD 2-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock4" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 4"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
    
                <!--ROW 3 - -!>
    
                <!- -CARD 1-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock5" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 5"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
                <!--CARD 2-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock6" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 6"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
    
                <!--ROW 7 - -!>
    
                 <!- -CARD 1-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock1" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 7"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
                <!--CARD 2-->
                <android.support.v7.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="120dp"
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp"
    
                    >
    
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">
    
                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/stock2" />
    
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="CHAPTER 2"
                            android:textAlignment="center"
                            android:textColor="@color/black"
                            android:textSize="12sp"
                            android:textStyle="bold|italic" />
                    </LinearLayout>
    
    
                </android.support.v7.widget.CardView>
    
    
            </GridLayout>
    
        </LinearLayout>
    
    </ScrollView>