Android 选项卡内的滚动视图未显示所有内容

Android Scrollview inside a tab not showing all content

我有两个选项卡,在第二个选项卡中我有比视口大的内容,所以我需要 ScrollView。但是,我无法让 ScrollView 显示所有内容。它在最后 ~10/20dp 处削减视图。这是我的 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>

在下图中,您可以看到当我将光标放在 ScrollView 中时会发生什么。蓝线就在导航栏上方。 以下是当我将光标放在 ScrollView 内的 RelativeLayout 中时发生的情况(它应该是这样的): Android Studio

有人能告诉我为什么 ScrollView 没有显示我的所有内容吗?

模拟器上是这样的。 Emulator

我想在评论中提出这个建议,但我的声誉不够高。首先,你在模拟器或android studio中看到的第一张截图是什么?

编辑: 抱歉刚刚看到链接的名称。您已经回答了这个问题。

尝试从 RelativeLayout 中删除滚动视图。如果所有内容都包含在 scrollView 中,则不需要布局。我觉得外部 relativeLayout 的宽度和高度的 "match_parent" 字段有问题。值得一试。

我已经使用 NestedScrollView 而不是 ScrollView 修复了它,因为片段是在 CoordinatorLayout 中启动的。那时我不知道只有 NestedScrollVew 可以工作。

这是对一个存在了一年的问题的回答。但我遇到了同样的问题,无法滚动最后几个 dps。我的顶部元素上还有一个 android:layout_marginTop 内容。在 ScrollView 上将其更改为 android:paddingTop 为我解决了这个问题。