Scrollview Not working for Cardview

9.6k views Asked by At

I have been working on a app, but stuck in a xml layout issue, the scrollview I usually use is not working when I am using the Card views inside a linear layout, I looked up in google and found out about NestedScrollview, it still wont work, app force closes, could some one tell me what exactly am I doing wrong, and correct. It will be very helpful.

activity_items_details.xml

<LinearLayout
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"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    app:cardElevation="5dp">

    <TextView
        android:id="@+id/tvItemDetailsName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="32sp"
        android:paddingTop="65dp"
        android:paddingBottom="65dp"
        tools:text="Item Name"
        android:textAllCaps="true"
        android:textStyle="bold" />

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


    <android.support.v7.widget.CardView>
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Qty"
                android:textSize="16sp"
                android:padding="10dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsQty"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="Qty:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="PO #"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsPono"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="PO #:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Supplier"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsSupplier"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="Supplier:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_gravity="center">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Contact"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsContact"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="Contact:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>


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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Transporter"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsTransport"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="Transporter:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="LR #"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsLrno"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="LR #:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="LR #"
                android:textSize="16sp"
                android:padding="10dp"
                android:paddingRight="5dp"
                android:textColor="@android:color/black"/>

            <TextView
                android:id="@+id/tvItemDetailsRemarks"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                tools:text="Remarks:"
                android:textSize="18sp"
                android:layout_gravity="center"/>

        </LinearLayout>

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

</android.support.v4.widget.NestedScrollView>

3

There are 3 answers

0
mthakuri On BEST ANSWER

Put LinearLayout after NestedScrollView like below if you don't want to try RecyclerView:

<android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>

0
Vivek_Neel On

You have multiple child views inside NestedScrollView, ScrollView or NestedScrollView can host only one child.

To fix your layout, put all the stuffs into any ViewGroup such as LinearLayout / RelativeLayout and then arrange your views accordingly

0
iDeveloper On

You should implement it like this :

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/activity_Recipe_detail_scrollview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
          <LinearLayout
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:orientation="vertical">
               // do what ever you need here
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>

hope this help