Arjen de Jong
Arjen de Jong

Reputation: 1121

Android Scrollview inside a tab not showing all content

I have two tabs and in the second tab I have content which is larger than the viewport, so I need ScrollView. However, I can't get ScrollView to show all content. It cuts the view at the last ~10/20dp. Here's my TabFragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:orientation="horizontal"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true">

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

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Dikte glas (mm)"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginTop="16dp"
            android:layout_marginLeft="16dp" />

        <TextView
            android:id="@+id/seekBarValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginTop="16dp"
            android:layout_marginRight="16dp"
            android:layout_alignParentEnd="true">
        </TextView>

        <SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:max="200"
            android:layout_marginTop="16dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@+id/seekBarValue"/>

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="0dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="20dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/seekBar">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp">

                <TextView
                    android:id="@+id/soakTime"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Soak time"
                    android:textStyle="bold"
                    />

                <TextView
                    android:id="@+id/txtResultStep1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"/>

            </RelativeLayout>

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

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="0dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/card_view1">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp">

                <TextView
                    android:id="@+id/initialCooling"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Initial Cooling"
                    android:textStyle="bold"
                    android:textSize="18sp"
                    />

                <View
                    android:layout_width="fill_parent"
                    android:layout_height="1dp"
                    android:layout_marginTop="8dp"
                    android:background="@android:color/darker_gray"
                    android:layout_below="@id/initialCooling"/>

                <TextView
                    android:id="@+id/rate1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rate"
                    android:layout_below="@id/initialCooling"
                    android:layout_marginTop="16dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/rate1"
                    />

                <TextView
                    android:id="@+id/range1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Range"
                    android:layout_below="@id/rate1"
                    android:layout_marginTop="8dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/range1"/>

            </RelativeLayout>

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

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="0dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/card_view2">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp">

                <TextView
                    android:id="@+id/secondCooling"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="2nd Cooling"
                    android:textStyle="bold"
                    android:textSize="18sp"
                    />

                <View
                    android:layout_width="fill_parent"
                    android:layout_height="1dp"
                    android:layout_marginTop="8dp"
                    android:background="@android:color/darker_gray"
                    android:layout_below="@id/secondCooling"/>

                <TextView
                    android:id="@+id/rate2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rate"
                    android:layout_below="@id/secondCooling"
                    android:layout_marginTop="16dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/rate2"/>

                <TextView
                    android:id="@+id/range2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Range"
                    android:layout_below="@id/rate2"
                    android:layout_marginTop="8dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/range2"/>

            </RelativeLayout>

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

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="0dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/card_view3">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp">

                <TextView
                    android:id="@+id/thirdCooling"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="3rd Cooling"
                    android:textStyle="bold"
                    android:textSize="18sp"
                    />
                <View
                    android:layout_width="fill_parent"
                    android:layout_height="1dp"
                    android:layout_marginTop="8dp"
                    android:background="@android:color/darker_gray"
                    android:layout_below="@id/thirdCooling"/>

                <TextView
                    android:id="@+id/rate3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rate"
                    android:layout_below="@id/thirdCooling"
                    android:layout_marginTop="16dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/rate3"/>

                <TextView
                    android:id="@+id/range3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Range"
                    android:layout_below="@id/rate3"
                    android:layout_marginTop="8dp"
                    />

                <TextView
                    android:id="@+id/txtResultStep7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"
                    android:layout_alignBaseline="@id/range3"/>

            </RelativeLayout>

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

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardCornerRadius="0dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_below="@id/card_view4">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="16dp">

                <TextView
                    android:id="@+id/totalMinimumTime"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Total minimum time"
                    android:textStyle="bold"
                    />

                <TextView
                    android:id="@+id/txtResultStep8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:width="120dp"
                    android:layout_alignParentEnd="true"/>

            </RelativeLayout>

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

</ScrollView>

</RelativeLayout>

Above in the following image you can see what happens when I have my cursor in the ScrollView. The blue line is just above the navigation bar. Under is what happens when I have my cursor in the RelativeLayout inside ScrollView (which is how it's supposed to be): Android Studio

Could someone tell my why the ScrollView is not showing all my content?

This is how it is on the emulator. Emulator

Upvotes: 3

Views: 2284

Answers (3)

Borje
Borje

Reputation: 255

Here's an answer to a year old question. But I had the same problem not being able to scroll for the last few dps. I also had a android:layout_marginTop on my top element with content. Changing that to a android:paddingTop on the ScrollView solved it for me.

Upvotes: 1

Arjen de Jong
Arjen de Jong

Reputation: 1121

I've fixed it by using NestedScrollView instead of ScrollView, because the fragment is initiated in a CoordinatorLayout. I didn't know that only NestedScrollVew would work then.

Upvotes: 3

Daniel Handojo
Daniel Handojo

Reputation: 642

I wanted to suggest this in a comment but my reputation isn't high enough. First of all, is the first screenshot what you see in the emulator or in android studio?

EDIT: Sorry just saw the names of the links. You already answer that question.

Try removing the scrollview from the RelativeLayout. If everything is contained in the scrollView, you shouldn't need the layout. I feel like the outside relativeLayout's "match_parent" fields for both width and height are problematic. Worth a shot.

Upvotes: 0

Related Questions