当前位置: 首页 > news >正文

app:layout_constrainedWidth=“true“ 在 compose 中怎么写, constraintlayout 强约束

在 Android View 系统中,app:layout_constrainedWidth="true" 是 ConstraintLayout 的一个属性,它允许子视图在指定的宽度约束下自由调整宽度(即如果约束允许更小的宽度,视图可以变小)。在 Jetpack Compose 中,你可以通过 Modifier.constrainAsDimension.fillToConstraints 来实现类似的效果。

示例

下面是一个使用 Jetpack Compose 实现类似 layout_constrainedWidth="true" 的示例:

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.constraintlayout.compose.ConstraintLayout
import androidx.constraintlayout.compose.Dimension@Composable
fun ConstrainedWidthText() {ConstraintLayout(modifier = Modifier.fillMaxWidth().height(200.dp).background(Color.LightGray)) {val (text) = createRefs()Text(text = "This text is constrained to its parent's width.",fontSize = 16.sp,modifier = Modifier.constrainAs(text) {start.linkTo(parent.start)end.linkTo(parent.end)top.linkTo(parent.top)bottom.linkTo(parent.bottom)// 使用 fillToConstraints 实现类似 constrainedWidth 的效果width = Dimension.fillToConstraints}.padding(8.dp))}
}@Preview(showBackground = true)
@Composable
fun ConstrainedWidthTextPreview() {ConstrainedWidthText()
}

关键点解释:

  • Dimension.fillToConstraints: 这个属性让 Text 的宽度填充到设置的约束位置,并且可以缩小到约束允许的最小宽度。相当于 layout_constrainedWidth="true" 的效果。

  • constrainAs(text) { ... }: 这里我们设置了 Textstartend 约束,使其宽度受限于父布局的左右边界。

详细说明:

  • 宽度限制: 使用 Dimension.fillToConstraints 可以让组件在其父容器宽度约束的范围内自由调整大小,类似于 XML 中的 layout_constrainedWidth="true"

  • 自动调整: 这个配置会自动根据父容器的宽度和其他约束调整组件的宽度,并确保组件不会超出其约束范围。

适用场景:

这个方法适用于需要在 ConstraintLayout 中控制组件宽度,同时希望组件根据父布局或其他子组件的约束自由调整大小的场景。

---- 文章由 ChatGPT 生成

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习——第十章 降维与度量学习
  • Pytorch添加自定义算子之(11)-C++应用程序将onnx模型编译并转成tensorrt可执行模型
  • 【Redis】Redis 数据类型
  • 从一个服务预热不生效问题谈微服务无损上线
  • 洛伦兹微分方程与混沌理论
  • Ubuntu22.04 Docker更换阿里云镜像
  • NVIDIA Triton系列03-开发资源说明
  • 几款设计师必备的AI抠图软件工具分享给你!
  • 把html字符串转为可以被js操作的dom
  • 【实现100个unity特效之17】在unity中使用shader和ShaderGraph分别实现模糊特定层,高斯模糊效果
  • leetcode数论(2280. 表示一个折线图的最少线段数)-几何
  • 开发学习日记1
  • SQL布尔盲注
  • 如何利用 ChatGPT 提高工作效率?
  • 【React】详解 App.js 文件
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [nginx文档翻译系列] 控制nginx
  • go语言学习初探(一)
  • Laravel 菜鸟晋级之路
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何用vue打造一个移动端音乐播放器
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用权重正则化较少模型过拟合
  • 数据结构java版之冒泡排序及优化
  • 赢得Docker挑战最佳实践
  • 【干货分享】dos命令大全
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ### RabbitMQ五种工作模式:
  • #70结构体案例1(导师,学生,成绩)
  • #pragma once与条件编译
  • #pragma 指令
  • #控制台大学课堂点名问题_课堂随机点名
  • (1)常见O(n^2)排序算法解析
  • (3)STL算法之搜索
  • (day 12)JavaScript学习笔记(数组3)
  • (Note)C++中的继承方式
  • (poj1.2.1)1970(筛选法模拟)
  • (初研) Sentence-embedding fine-tune notebook
  • (二)springcloud实战之config配置中心
  • (十)T检验-第一部分
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .Net Core 中间件与过滤器
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET中使用Redis (二)
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .vimrc 配置项
  • /tmp目录下出现system-private文件夹解决方法
  • ?.的用法
  • @Import注解详解
  • @RestControllerAdvice异常统一处理类失效原因
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计