标题会以最终内容中的问题为标题,问题可能包含多个,有可能只包含一个。
1. 为什么 ScrollView
不能滚动到底部?
我在网上百度和谷歌了,现在都是说不要在 ScrollView
的孩子节点上添加 paddingTop
或 paddingBottom
,于是我就去掉了,但是仍然存在问题。实际场景是这样的:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="60dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleSalesmen">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 这里包含其他的很多节点 -->
<!-- 由于不能设置marginBottom,所以我这里使用一个空节点代替 -->
<View
android:id="@+id/remainingSpace"
android:layout_width="match_parent"
android:layout_height="42dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/workbench_constraintlayout2" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
当我设置 NestedScrollView
的 android:layout_height
的值为一个确定的高时,我发现是可以的,于是我就怀疑是 NestedScrollView
的高度出现了问题,可以看 Design
效果:
当我点击右下角的那个图标拖动显示视图时,我发现当拖到比图中的高度要低时,这时
NestedScrollView
的高度居然还是这么高,这说明 NestedScrollView
的高是内容的高度,并不是屏幕剩余空间的高度。
现在抛出第二个问题,为啥我设置了 0dp
,为啥不是剩余空间呢,而是内容的高度呢?
可以看到 NestedScrollView
的约束并没有底部约束,如果没有底部约束的话,那么就会出现下面会以自身内容作为高度,这样就很容易理解了,所以我们只需要给 NestedScrollView
添加底部约束即可:
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/public_ui_60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleSalesmen">
也就是添加 app:layout_constraintBottom_toBottomOf="parent"
就可以了。
网友评论