- /// 约束比例修改
- private fun adapterCellRatio(holder: BaseViewHolder) {
- // 确保视图完全加载后进行操作
- val consLayoutBaseBG = holder.getView
(R.id.cl_cell_bg) - // 获取当前约束比例
- val currentDimensionRatio = getCurrentDimensionRatio(consLayoutBaseBG, R.id.cl_cell_bg_id)
- val targetDimensionRatio = "h,78:65"
- if (currentDimensionRatio != targetDimensionRatio) {
- val constraintSet = ConstraintSet() // 创建 ConstraintSet 实例
- constraintSet.clone(consLayoutBaseBG) // 加载当前布局约束
- constraintSet.setDimensionRatio(R.id.cl_cell_bg_id, targetDimensionRatio ) // 修改 layout_constraintDimensionRatio 的比例
- constraintSet.applyTo(consLayoutBaseBG) // 应用新的约束
- }
- }
- "1.0" encoding="utf-8"?>
- <androidx.constraintlayout.widget.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:id="@+id/cl_cell_bg"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@color/black"
- android:radius="10dp">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/cl_cell_bg_id"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintDimensionRatio="h,78:60"
- app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent">
-
- <androidx.constraintlayout.widget.ConstraintLayout
- android:id="@+id/cl_center"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- androidx.constraintlayout.widget.ConstraintLayout>
-
- androidx.constraintlayout.widget.ConstraintLayout>
-
- androidx.constraintlayout.widget.ConstraintLayout>
Error updating constraint: All children of ConstraintLayout must have ids to use ConstraintSet
报错信息指出,ConstraintLayout 中的所有子视图都必须有 ID 才能使用 ConstraintSet。这是因为 ConstraintSet 需要通过视图的 ID 来引用和修改约束。你需要确保所有直接或间接属于 ConstraintLayout 的子视图都有一个唯一的 ID。