我的ScrollView
内ConstraintLayout
ConstraintLayout
,RecyclerView
内有<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:fillViewport="true"
android:overScrollMode="never">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="15dp"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
</ScrollView>
。
结构是这样的:
ScrollView
我的代码将对象列表填充到RecyclerView,没问题。唯一的问题是new AlertDialog.Builder(MainActivity.this)
.setTitle(getResources().getString(R.string.emergency_diag_title)) //AlertDialog title
.setMessage(getResources().getString(R.string.emrgency_diag_desc)) //AlertDialog description
.setCancelable(true)
//call button
.setPositiveButton(getResources().getString(R.string.emergency_diag_call), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.e("RuiterRoute", "Emergency Call triggered by user");
}
})
//cancel button
.setNegativeButton(getResources().getString(R.string.emergency_cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.e("RuiterRoute", "Emergency Call canceld by user");
}
}).show();
底部有一个很大的空白区域,我不明白为什么?有人可以指出我正确的方向吗?提前谢谢!
(这个结果的一个问题是,例如,如果我的列表中只有一个对象,则不需要滚动视图,但它仍然可以滚动,底部有一个大的空白区域。)
答案 0 :(得分:0)
丢失了ScrollView
,RecyclerView
可以自行滚动。
ConstraintLayout
您需要将所有边限制为父节点并且宽度和高度为0dp(match_constraint)
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_list"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="15dp"
android:clipToPadding="false"
/>
</android.support.constraint.ConstraintLayout>
注释
ConstraintLayout
的宽度和高度为match_parent
。
您RecyclerView
的宽度和高度为0dp
,这意味着要匹配约束,而RecyclerView
对父母的所有边都是约束。
当内容更适合屏幕时,您的回收者视图将滚动
答案 1 :(得分:0)
对wrap_content
使用match_content
代替RecyclerView
后,我的问题就解决了。
答案 2 :(得分:0)
这是一个ConstraintLayout错误(在ScrollView中包装ConstraintLayout时)并在新的beta版本中得到修复。我有同样的问题,并更新到 1.1.0-beta4 ,这解决了它。点击此处查看最新版本:
https://dl.google.com/dl/android/maven2/com/android/support/constraint/group-index.xml