32

我用一个片段实现了 NonSwipeableViewPager,它有这样的 NestedScrollView,我期望滚动视图可以向上滚动并显示 2 个文本视图:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

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

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

            <include
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                layout="@layout/header" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="16dp"
                android:src="@drawable/ic_up" />

        </RelativeLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text 1" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text 2" />

    </LinearLayout>

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

但它无法滚动,我尝试了很多方法但仍然没有得到任何解决方案

4

5 回答 5

122
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

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

这个线性布局应该有android:layout_height="wrap_content".

这样做的原因是,如果滚动视图的子级与滚动视图本身的大小相同(两者都是match_parent高度),则意味着没有任何内容可以滚动,因为它们的大小相同,并且滚动视图只会与屏幕一样高。

如果线性布局的高度为 ,wrap_content则高度与屏幕高度无关,并且滚动视图将能够滚动它。

请记住,滚动视图只能有 1 个直接子级,并且该子级需要android:layout_height="wrap_content"

于 2016-05-13T09:36:50.947 回答
15

就我而言 app:layout_behavior="@string/appbar_scrolling_view_behavior",这只有在尝试解决某个面临的问题并且也可能解决您的问题时才有效。你也应该添加android:fillViewport="true"但没有这个我的代码工作。

 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@drawable/subscription_background"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
于 2017-10-23T11:59:33.427 回答
5

对我来说,当我为 androidx.core.widget.NestedScrollView 中的最后一个孩子添加“android:layout_marginBottom="100dp"”时它起作用了

于 2020-08-04T07:50:33.613 回答
0

如果您使用 netedscrollview 如下,则必须使用 android:scrollbars="vertical"

<androidx.core.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintTop_toBottomOf="@id/toolbar_updateUserDetails"
    app:layout_constraintBottom_toBottomOf="parent"
    android:fillViewport="true">
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:scrollbars="vertical"
        >
</LinearLayout>
</androidx.core.widget.NestedScrollView>
于 2021-05-25T05:26:16.247 回答
-1

你必须计算你的另一个孩子,因为最后一个孩子绑定在 nestedScrollView 上。您添加边距,例如子高度。这是工作。

于 2020-10-27T11:21:33.747 回答