在Android中,我想要实现一个固定高度的滚动视图,并且里面的内容也有固定的高度。
滚动视图的高度是300dp,直接子元素(相对布局)为500dp,文本视图从顶部距离为301dp。这意味着在到达文本视图后,我仍然可以从相对布局的底部拖动200dp的空间。
我使用下面的XML成功创建了所需的效果。
<ScrollView
android:layout_width="match_parent"
android:layout_height="300dp" >
<RelativeLayout
android:layout_width="match_parent"
android:background="#FFC0CB"
android:layout_height="500dp" >
<TextView
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/new_realm_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="301dp"
android:text="long text" />
</RelativeLayout>
</ScrollView>
但是问题在于,如果我将相对布局更改为约束布局,那么现在滚动只会滚动到高度为310dp的文本视图,而不会显示底部200dp的空白。
有人能解释一下为什么约束布局会给我带来这种奇怪的行为吗? 根据Differences between ConstraintLayout and RelativeLayout,约束布局“具有相对布局和线性布局的双重功能”,它应该能够实现相对布局所能实现的功能。