kotlin 动态设置约束布局宽高代码
时间: 2023-09-12 10:12:05 浏览: 51
可以使用 ConstraintSet 来动态设置约束布局的宽高。
以下是一个示例代码:
```kotlin
// 获取约束布局
val constraintLayout = findViewById<ConstraintLayout>(R.id.constraint_layout)
// 创建 ConstraintSet 对象
val constraintSet = ConstraintSet()
// 克隆约束布局的约束关系
constraintSet.clone(constraintLayout)
// 设置某个 View 的宽度
val viewId = R.id.view1
val width = 200 // 设置宽度为 200dp
constraintSet.constrainWidth(viewId, dpToPx(width))
// 设置某个 View 的高度
val height = 100 // 设置高度为 100dp
constraintSet.constrainHeight(viewId, dpToPx(height))
// 应用约束关系
constraintSet.applyTo(constraintLayout)
// dp 转 px 的方法
private fun dpToPx(dp: Int): Int {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp.toFloat(), resources.displayMetrics).toInt()
}
```
在这个示例中,我们先获取了约束布局的实例,然后创建了一个 ConstraintSet 对象,并克隆了约束布局的约束关系。接着,我们使用 `constrainWidth` 和 `constrainHeight` 方法来设置某个 View 的宽高。最后,使用 `applyTo` 方法将约束关系应用到约束布局上。
需要注意的是,我们使用了 `dpToPx` 方法来将 dp 转换为 px,因为 `constrainWidth` 和 `constrainHeight` 方法需要接受 px 作为参数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)