RecyclerView Card 双向扩展
RecyclerView Card expands in both directions
我有一个带有 CardView 的 RecyclerView。当用户点击卡片时,它应该会扩展,在其下方显示一个视图列表。但是,当它扩展时,它既向下扩展又向上扩展,在相关内容上方留下空白space。
This is what the expanded card ends up looking like.
我的布局文件如下所示:
<layout 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">
<data>
<variable
name="event"
type="com.example.android.productiville.calendarApiService.Event" />
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardBackgroundColor="#1C1C1C"
app:cardCornerRadius="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true">
<TextView
android:id="@+id/taskName"
android:layout_width="276dp"
android:layout_height="64dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="@font/work_sans"
android:gravity="center_vertical"
android:text="@string/taskName"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:taskName="@{event}" />
<TextView
android:id="@+id/dayOfWeek"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/work_sans"
android:text="@string/taskDay"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/taskName"
app:layout_constraintTop_toTopOf="@+id/taskName"
app:taskDay="@{event}" />
<TextView
android:id="@+id/startTime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/work_sans"
android:text="@string/startTime"
app:layout_constraintBottom_toBottomOf="@+id/taskName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/taskName"
app:layout_constraintTop_toBottomOf="@+id/dayOfWeek"
app:startTime="@{event}" />
<com.google.android.material.button.MaterialButton
android:id="@+id/editTaskButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_create_24px"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBaseline_toBaselineOf="@+id/addSubTaskButton"
app:layout_constraintEnd_toStartOf="@+id/addSubTaskButton"
app:layout_constraintStart_toStartOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/addSubTaskButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_add_black_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/closeEditPanelButton"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_clear_white_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBaseline_toBaselineOf="@+id/addSubTaskButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/addSubTaskButton" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/expandableLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/taskName"
android:layout_marginTop="16dp"
android:visibility="gone">
<LinearLayout
android:id="@+id/subTasks"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</layout>
我做不到,卡只能向下展开。我会很感激这里的一些方向。提前致谢!
问题是“taskName”TextView 和“addSubTaskButton”按钮被限制在 ConstraintView 的顶部和底部,高度=wrap_content 正在调整卡片的大小,以便这些视图根据这些约束保持居中。删除这些约束解决了问题。
我有一个带有 CardView 的 RecyclerView。当用户点击卡片时,它应该会扩展,在其下方显示一个视图列表。但是,当它扩展时,它既向下扩展又向上扩展,在相关内容上方留下空白space。
This is what the expanded card ends up looking like.
我的布局文件如下所示:
<layout 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">
<data>
<variable
name="event"
type="com.example.android.productiville.calendarApiService.Event" />
</data>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardBackgroundColor="#1C1C1C"
app:cardCornerRadius="8dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true">
<TextView
android:id="@+id/taskName"
android:layout_width="276dp"
android:layout_height="64dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="@font/work_sans"
android:gravity="center_vertical"
android:text="@string/taskName"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:taskName="@{event}" />
<TextView
android:id="@+id/dayOfWeek"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/work_sans"
android:text="@string/taskDay"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/taskName"
app:layout_constraintTop_toTopOf="@+id/taskName"
app:taskDay="@{event}" />
<TextView
android:id="@+id/startTime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:fontFamily="@font/work_sans"
android:text="@string/startTime"
app:layout_constraintBottom_toBottomOf="@+id/taskName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/taskName"
app:layout_constraintTop_toBottomOf="@+id/dayOfWeek"
app:startTime="@{event}" />
<com.google.android.material.button.MaterialButton
android:id="@+id/editTaskButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_create_24px"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBaseline_toBaselineOf="@+id/addSubTaskButton"
app:layout_constraintEnd_toStartOf="@+id/addSubTaskButton"
app:layout_constraintStart_toStartOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/addSubTaskButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_add_black_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/closeEditPanelButton"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="64dp"
android:layout_height="64dp"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:visibility="gone"
app:cornerRadius="30dp"
app:icon="@drawable/ic_clear_white_24dp"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:layout_constraintBaseline_toBaselineOf="@+id/addSubTaskButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/addSubTaskButton" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/expandableLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/taskName"
android:layout_marginTop="16dp"
android:visibility="gone">
<LinearLayout
android:id="@+id/subTasks"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</layout>
我做不到,卡只能向下展开。我会很感激这里的一些方向。提前致谢!
问题是“taskName”TextView 和“addSubTaskButton”按钮被限制在 ConstraintView 的顶部和底部,高度=wrap_content 正在调整卡片的大小,以便这些视图根据这些约束保持居中。删除这些约束解决了问题。