Maifee Ul Asad
Maifee Ul Asad

Reputation: 4607

TextView after ImageView in LinearLayout not rendering

I'm trying to create a LinarLayout which will contain 5 more LinearLayout as children, each having a weight of 1. So they will take the same amount of space on the screen. Now inside these children LinearLayout, I will put CardView with the weight of 1 and they will have orientation horizontally. So they will render side by side, equally. Inside these CardViews I have put another LinearLayout so that its children don't get overlapped. In this last LinearLayout I have put 1 ImageView and 1 TextView.

But the thing is, the TextView is not rendering.

What seems to be the issue here? Too many nested weights? Improper weight distributions?

Current view:

text view after image view in linear layout not rendering

My whole XML:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">


    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_calender_test"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_3test_calender"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_website_test"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_4test_website"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_administration"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_5administration"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_office_and_section"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_6office_and_section"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_blood_bank"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_7blood_bank"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_bus_schedule"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_8bus_schedule"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>

    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_emergency"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_9emergency"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_gpa_calculator"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_10_gpa_calculator"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>


    <androidx.appcompat.widget.LinearLayoutCompat
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal">


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_news_and_event"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_11news_and_event"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:elevation="10dp"
            android:orientation="horizontal"
            app:cardElevation="2dp">


            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <androidx.appcompat.widget.AppCompatImageButton
                    android:id="@+id/btn_others"
                    style="@style/home_button_style"
                    android:layout_width="match_parent"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
                    android:src="@drawable/home_12others"
                    android:text="About">

                </androidx.appcompat.widget.AppCompatImageButton>

                <androidx.appcompat.widget.AppCompatTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="About" />

            </androidx.appcompat.widget.LinearLayoutCompat>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>

</androidx.appcompat.widget.LinearLayoutCompat>

And the style for button looks something like this:

<style name="home_button_style">
        <item name="android:background">@color/transparent</item>
        <item name="android:textColor">@color/grey600</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:adjustViewBounds">true</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textAllCaps">false</item>
    </style>

Upvotes: 0

Views: 67

Answers (3)

Maifee Ul Asad
Maifee Ul Asad

Reputation: 4607

Using GridLayout solved all the problems. I think in this way code becomes more readable, and we can modify the code more easily (as elements are less depandent on each other now).

Here is the relevant source code:

<GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:columnCount="2"
            android:rowCount="6">

            <!--1,1-->

            <com.google.android.material.card.MaterialCardView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_margin="2dp"
                android:layout_column="0"
                android:layout_gravity="fill"
                android:elevation="10dp"
                android:orientation="horizontal"
                app:cardElevation="2dp">

                <androidx.appcompat.widget.LinearLayoutCompat
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="2dp"
                    android:orientation="vertical">

                    <androidx.appcompat.widget.AppCompatImageButton
                        android:id="@+id/btn_about"
                        style="@style/home_button_style"
                        android:layout_centerHorizontal="true"
                        android:layout_gravity="center"
                        android:src="@drawable/home_1"
                        android:text="About" />

                    <androidx.appcompat.widget.AppCompatTextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentBottom="true"
                        android:gravity="center"
                        android:text="About" />
                </androidx.appcompat.widget.LinearLayoutCompat>
            </com.google.android.material.card.MaterialCardView>


            <!--1,2-->


            <com.google.android.material.card.MaterialCardView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_margin="2dp"
                android:layout_column="1"
                android:layout_gravity="fill"
                android:elevation="10dp"
                android:orientation="horizontal"
                app:cardElevation="2dp">

                <androidx.appcompat.widget.LinearLayoutCompat
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_margin="2dp"
                    android:orientation="vertical">

                    <androidx.appcompat.widget.AppCompatImageButton
                        android:id="@+id/btn_faculty"
                        style="@style/home_button_style"
                        android:layout_width="wrap_content"
                        android:layout_centerHorizontal="true"
                        android:layout_gravity="center"
                        android:adjustViewBounds="true"
                        android:src="@drawable/home_2faculties"
                        android:text="Faculty" />

                    <androidx.appcompat.widget.AppCompatTextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_alignParentBottom="true"
                        android:gravity="center"
                        android:text="Faculty" />
                </androidx.appcompat.widget.LinearLayoutCompat>
            </com.google.android.material.card.MaterialCardView>

            ...
</GridLayout>

Upvotes: 0

Ajay Makwana
Ajay Makwana

Reputation: 189

You can replace your layout with the below one provided hope it will gives you your desired result!

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:gravity="center"
   android:orientation="vertical">


<androidx.appcompat.widget.LinearLayoutCompat
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal">


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_calender_test"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout"
                android:layout_centerHorizontal="true"
                android:src="@drawable/home_3test_calender"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_website_test"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout2"
                android:src="@drawable/home_4test_website"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


</androidx.appcompat.widget.LinearLayoutCompat>

<androidx.appcompat.widget.LinearLayoutCompat
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal">


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_administration"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout3"
                android:layout_centerHorizontal="true"
                android:src="@drawable/home_5administration"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_office_and_section"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout4"
                android:src="@drawable/home_6office_and_section"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


</androidx.appcompat.widget.LinearLayoutCompat>

<androidx.appcompat.widget.LinearLayoutCompat
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal">


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_blood_bank"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout5"
                android:layout_centerHorizontal="true"
                android:src="@drawable/home_7blood_bank"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_bus_schedule"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout6"
                android:src="@drawable/home_8bus_schedule"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


</androidx.appcompat.widget.LinearLayoutCompat>

<androidx.appcompat.widget.LinearLayoutCompat
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal">


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_emergency"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout7"
                android:layout_centerHorizontal="true"
                android:src="@drawable/home_9emergency"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout7"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_gpa_calculator"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout8"
                android:src="@drawable/home_10_gpa_calculator"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout8"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


</androidx.appcompat.widget.LinearLayoutCompat>

<androidx.appcompat.widget.LinearLayoutCompat
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal">


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_news_and_event"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout9"
                android:layout_centerHorizontal="true"
                android:src="@drawable/home_11news_and_event"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout9"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_alignParentBottom="true"
                android:text="About" />

        </RelativeLayout>


    </androidx.cardview.widget.CardView>


    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:elevation="10dp"
        android:orientation="horizontal"
        app:cardElevation="2dp">


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <androidx.appcompat.widget.AppCompatImageButton
                android:id="@+id/btn_others"
                style="@style/home_button_style"
                android:layout_width="wrap_content"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:layout_above="@id/txtAbout10"
                android:src="@drawable/home_12others"
                android:text="About">

            </androidx.appcompat.widget.AppCompatImageButton>

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/txtAbout10"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:text="About" />

            </RelativeLayout>


        </androidx.cardview.widget.CardView>


    </androidx.appcompat.widget.LinearLayoutCompat>

</androidx.appcompat.widget.LinearLayoutCompat>

And yes please avoid to use unnecessary nested views hierarchy its bad for performance.

You can use RecyclerView with GridLayoutManager to Achieve the same result!

Happy Coding!!

Upvotes: 1

Zain
Zain

Reputation: 40840

Generally speaking, this layout hierarchy is too much in terms of the depth and can be heavy to render, traverse and maintain; it's preferred to be replaced by the ConstraintLayout

Solution:

The android:adjustViewBounds="true" tends to adjust the bounds of the ImageButton to preserve the aspect ratio of its drawable; that can occupy the entire area of the parent LinearLayout and obscure the size of the TextView.

It expands the bounds towards the right and bottom, whereas the TextView at the bottom it can be obscured by the ImageButton. Try to add the TextView on top of the ImageButton, you'll notice they will be there; as the expansion is doesn't target the top area.

To fix this you need to hard code the android:layout_weight="1" to all the AppCompatImageButton's

Upvotes: 1

Related Questions