我ConstraintLayout
内有NestedScrollView
。 ConstraintLayout
包含一堆视图,但最后View
可以有动态高度来填充底部空间iff有任何但如果没有足够的空间它也需要是最小高度。
为了论证,这是一个例子。
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout_height="match_parent">
<View
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_min="1500dp"
android:background="@color/red"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
正如您所看到的,我已将ConstraintLayout
版本放入,但它不起作用。显然,这些值非常大,但这只是用于测试。
如果我未在fillViewport="true"
上设置NestedScrollView
,则ConstraintLayout
的高度为0.当我设置fillViewport
时,ConstraintLayout
不滚动但只是填满屏幕。
如何设置视图以使其扩展到ConstraintLayout
的底部,它应该与视口一样大,但如果我的视图不是minHeight
那么我们允许滚动?< / p>
我正在使用1.0.2
库的版本ConstraintLayout
。
我期望看到的是一直到父母的底部但是如果该大小小于1500dp
则视图滚动。
我输入1500dp就像android:layout_height="1500dp"
一样,视图会相应滚动。
更新1
似乎是我将布局放在FragmentViewPager
内。 app:layout_constraintHeight_min
属性不受尊重,只匹配视口的高度。
我还尝试从片段中取出NestedScrollView
并将ViewPager
放入其中,但再次无效。
答案 0 :(得分:17)
将此属性添加到您想要拉伸的视图中:
b
我做了一个小应用程序来演示。没有Java逻辑可言,但这里是布局:
app:layout_constraintHeight_default="spread"
底视图伸展以在视口小于剩余可用空间时填充视口,并且无法滚动:
当底部视图大于剩余的可用空间时,底部视图保持固定的高度,这使滚动成为可能:
答案 1 :(得分:0)
我正在使用com.android.support.constraint:constraint-layout:1.0.2
这对我有用:
<android.support.v4.widget.NestedScrollView 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="vertical">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/gradient"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_min="1500dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
答案 2 :(得分:0)
首先,我们必须为每个文本视图指定固定高度或使用换行内容作为另一个选项。辅助内部约束布局属性 app:layout_constraintHeight_default =“spread”帮助最后查看以获得剩余的完整空间,如果没有剩余空间,则自动同步滚动视图。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
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:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#caf"
android:padding="16dp">
<TextView
android:id="@+id/one"
android:layout_width="0dp"
android:layout_height="48dp"
android:background="#fff"
android:gravity="center"
android:text="hello world"
app:layout_constraintBottom_toTopOf="@+id/two"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="48dp"
android:background="#eee"
android:gravity="center"
android:text="hello world"
app:layout_constraintBottom_toTopOf="@+id/three"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/one" />
<TextView
android:id="@+id/three"
android:layout_width="0dp"
android:layout_height="48dp"
android:background="#eee"
android:gravity="center"
android:text="hello world"
app:layout_constraintBottom_toTopOf="@+id/four"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/two" />
<TextView
android:id="@+id/four"
android:layout_width="0dp"
anroid:layout_height="48dp"
android:background="#eee"
android:gravity="center"
android:text="hello world"
app:layout_constraintBottom_toTopOf="@+id/five"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/three" />
<TextView
android:id="@+id/five"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ddd"
android:gravity="center"
android:text="hello world"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHeight_default="spread"
app:layout_constraintHeight_min="300dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/three" />
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>