NestedScrollView 无法以 match_parent 高度 child 滚动
NestedScrollView could not scroll with match_parent height child
我实现 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>
但是无法滚动,试了很多方法还是没有解决
<?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
),则意味着没有可滚动的内容,因为它们的大小相同且scrollview 只会和屏幕一样高。
如果线性布局的高度为wrap_content
,则该高度与屏幕高度无关,scrollview 将能够滚动它。
请记住,一个滚动视图只能有 1 个直接子视图,并且该子视图需要 android:layout_height="wrap_content"
在我的例子中 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">
对我来说,当我为 androidx.core.widget.NestedScrollView
中的最后一个 child 添加“android:layout_marginBottom="100dp"" 时它起作用了
您必须计算您的其他 child,因为最后 child 绑定在 nestedScrollView 上。您添加像 child 高度这样的边距。正在运行。
如果你已经使用了 nestedscrollview 如下你必须使用
android:scrollbars="垂直"
<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>
我实现 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>
但是无法滚动,试了很多方法还是没有解决
<?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
),则意味着没有可滚动的内容,因为它们的大小相同且scrollview 只会和屏幕一样高。
如果线性布局的高度为wrap_content
,则该高度与屏幕高度无关,scrollview 将能够滚动它。
请记住,一个滚动视图只能有 1 个直接子视图,并且该子视图需要 android:layout_height="wrap_content"
在我的例子中 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">
对我来说,当我为 androidx.core.widget.NestedScrollView
中的最后一个 child 添加“android:layout_marginBottom="100dp"" 时它起作用了您必须计算您的其他 child,因为最后 child 绑定在 nestedScrollView 上。您添加像 child 高度这样的边距。正在运行。
如果你已经使用了 nestedscrollview 如下你必须使用 android:scrollbars="垂直"
<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>