我有一个RecyclerView,我正在尝试使用CardView对象进行填充。每个目录的根视图都是ConstraintLayout。
我希望Recyclerview中的卡片各自占据垂直屏幕空间的25%并堆叠。我使用了各种准则来设置这些约束。
我注意到,虽然我可以查看CardView,但betweeen卡中有足够的空间。当我希望CardView彼此堆叠时,似乎RecyclerView正在填充与match_parent高度相同的视图:
RecyclerView:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_ingredients"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v7.widget.RecyclerView>
个人CardView:
<?xml version="1.0" encoding="utf-8"?>
<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.support.constraint.Guideline
android:id="@+id/guideline_zero"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintGuide_percent=".025" />
<android.support.constraint.Guideline
android:id="@+id/guideline_one"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.975" />
<android.support.constraint.Guideline
android:id="@+id/guideline_two"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.025" />
<android.support.constraint.Guideline
android:id="@+id/guideline_four"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.25" />
<android.support.v7.widget.CardView
android:id="@+id/recipe_cardview"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toStartOf="@+id/guideline_one"
app:layout_constraintStart_toStartOf="@+id/guideline_zero"
app:layout_constraintTop_toTopOf="@+id/guideline_two"
app:layout_constraintBottom_toTopOf="@+id/guideline_four">
<TextView
android:id="@+id/id_of_recipe_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</android.support.v7.widget.CardView>
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:1)
由ConstraintLayout
决定每个RecyclerView
项目的高度。由于ConstraintLayout
的高度为match_parent
,因此每个项目都会占据整个屏幕。在ConstraintLayout
内,CardView
将占25%。剩余的75%将为空白。这就是为什么您看到报告的原因。
因此,您需要一种使ConstraintLayout
为屏幕高度的25%的方法。不幸的是,除非通过代码,否则无法直接为RecyclerView
的子级指定25%的高度。 (并非完全正确:例如,如果您在RecyclerVIew
处定义了100dp
,则可以将ConstraintLayout
定义为25dp
并对其进行处理。我假设您不想在代码中指定确切的高度。)
要达到25%的高度,您需要确定RecyclerView
布局后的高度,并在{{1}中设置ConstraintLayout
的高度onCreateViewHolder()
的适配器}。