• [Android]修改XML中定义的约束比例


    修改约束比例:

    1. /// 约束比例修改
    2. private fun adapterCellRatio(holder: BaseViewHolder) {
    3. // 确保视图完全加载后进行操作
    4. val consLayoutBaseBG = holder.getView(R.id.cl_cell_bg)
    5. // 获取当前约束比例
    6. val currentDimensionRatio = getCurrentDimensionRatio(consLayoutBaseBG, R.id.cl_cell_bg_id)
    7. val targetDimensionRatio = "h,78:65"
    8. if (currentDimensionRatio != targetDimensionRatio) {
    9. val constraintSet = ConstraintSet() // 创建 ConstraintSet 实例
    10. constraintSet.clone(consLayoutBaseBG) // 加载当前布局约束
    11. constraintSet.setDimensionRatio(R.id.cl_cell_bg_id, targetDimensionRatio ) // 修改 layout_constraintDimensionRatio 的比例
    12. constraintSet.applyTo(consLayoutBaseBG) // 应用新的约束
    13. }
    14. }
    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:id="@+id/cl_cell_bg"
    6. android:layout_width="match_parent"
    7. android:layout_height="wrap_content"
    8. android:background="@color/black"
    9. android:radius="10dp">
    10. <androidx.constraintlayout.widget.ConstraintLayout
    11. android:id="@+id/cl_cell_bg_id"
    12. android:layout_width="match_parent"
    13. android:layout_height="0dp"
    14. app:layout_constraintBottom_toBottomOf="parent"
    15. app:layout_constraintDimensionRatio="h,78:60"
    16. app:layout_constraintLeft_toLeftOf="parent"
    17. app:layout_constraintRight_toRightOf="parent"
    18. app:layout_constraintTop_toTopOf="parent">
    19. <androidx.constraintlayout.widget.ConstraintLayout
    20. android:id="@+id/cl_center"
    21. android:layout_width="match_parent"
    22. android:layout_height="match_parent">
    23. androidx.constraintlayout.widget.ConstraintLayout>
    24. androidx.constraintlayout.widget.ConstraintLayout>
    25. androidx.constraintlayout.widget.ConstraintLayout>

    注意报错

    Error updating constraint: All children of ConstraintLayout must have ids to use ConstraintSet

    报错信息指出,ConstraintLayout 中的所有子视图都必须有 ID 才能使用 ConstraintSet。这是因为 ConstraintSet 需要通过视图的 ID 来引用和修改约束。你需要确保所有直接或间接属于 ConstraintLayout 的子视图都有一个唯一的 ID。

  • 相关阅读:
    C和指针 第15章 输入/输出函数 15.5 流I/O总览
    Python全栈工程师之从网页搭建入门到Flask全栈项目实战(3) - 入门Flask微框架
    JVM报错GC overhead limit exceeded
    DVWA(一)
    827万!朔黄铁路基于5G边缘计算的智慧牵引变电所研究项目
    创意电子学小知识:串联和并联
    Java数据类型
    使用GitHub Actions实现自动化部署
    【组件传参】返回e和传入的参数 - uniapp中this.$emit回传多个值 - uniapp组件中带事件参数event和多个参数
    多进程单线程多端口TCPUDP三层协议转发
  • 原文地址:https://blog.csdn.net/u012881779/article/details/139939475