Compose 自定义 - 约束 Constrains

一、概念

是当前节点宽高的上下界(最大值和最小值)。在 Layout 阶段,当父节点测量子节点的时候会把 Contraints 往下传递,好让子元素知道自己被允许的最大最小尺寸,当所有子元素被测量完成后开始决定自身尺寸时,同样的需要考虑自身的父容器给出的约束。

1.1 类型

对宽高可以分别设置不同类型的约束。

有界的一个区间,即包含最大值和最小值。
无界的没有约束,即0到无限大。
固定的一个确切值,即最大值最小值相等。

二、Modifier 对 Contraints 的影响

.size()在遵守约束的前提下往传入值靠拢。值在区间就是该值,低于最小值就是最小值,超过最大值就是最大值。
.requiredSize()就是要忽略约束使用自己的值。例如调用 .size(100dp) 后约束为 weight[100-100dp]、height[100-100dp],再调用 .requiredSize(50dp) 后约束为 weight[50-50dp]、height[50-50dp]。
.width()、.height()相比用 size 同时设置宽高,单独设置宽或高不影响对方。
.sizeIn()

能更细粒度的控制约束。

.sizeIn(

        minWidth = 100dp,

        maxWidth = 200dp,

        minHeight = 10dp,

        maxHeight = 20dp

)

.wrapContentSize()会把宽高约束的最小值重置为0。
.fillMaxSize()会把宽高约束变为最大值。

2.1 单次调用

父容器传入的 Contraints 为 weight[100-300dp]、height[100-200dp]

在约束范围内

调用 Modifier.size(150dp),约束变成 weight[150-150dp]、height[150-150dp] 继续向下传递,此时该节点显示一个 150*150 的矩形。

小于约束范围

调用 Modifier.size(50dp),约束变成 weight[100-100dp]、height[100-100dp] 继续向下传递,该节点显示一个 100*100 的矩形。

大于约束范围

调用 Modifier.size(400dp),约束变成 weight[300-300dp]、height[200-200dp] 继续向下传递,该节点显示一个 300*200 的矩形。

2.2 多次调用

上方距离其实也解释了链式调用 .size() 为什么只有第一个生效,因为第一个已经把约束变为最大值和最小值相等的固定值,这样第二个无论传值更大或更小,都会因为遵循 Contraints 的工作原理而无法再次改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python自动定时任务schedule库的使用方法

当你需要在 Python 中定期执行任务时,schedule 库是一个非常实用的工具。它可以帮助你自动化定时任务。以下是一些使用示例: 基本使用: import schedule import timedef job():print("Im working...")schedule.every(10).minutes.d…

开关电源电路主要元器件基础知识详解

在学习电子电路过程中,电源我们无法绕开的一个重要部分,很多时候,故障就出现在电源部分,特别是开关电源。开关电源电路主要是由熔断器、热敏电阻器、互感滤波器、桥式整流电路、滤波电容器、开关振荡集成电路、开关变压器、光耦合…

文件管理大师:深入解析Linux的文件与目录操控

目录 一、文件命名规则 1、可以使用哪些字符? 2、文件名的长度 3、Linux文件名大小写 4、Linux文件扩展名 二、文件管理命令 1、目录创建/删除 mkdir创建目录 直接创建文件夹 创建多个文件夹 递归创建写法 总结mkdir 删除空目录 2、文件创建、删除 touch创建文…

Camtasia 2024.3.7 Mac功能强大的屏幕录制和视频编辑软件

Camtasia 2024.3.7 是一款功能强大的屏幕录制和视频编辑软件,广泛用于创建教育、培训、演示和演讲等各种视频内容。它具有直观的用户界面和丰富的功能,使用户能够轻松地录制屏幕动画、添加音频、视频、文本和效果,并进行高质量的视频编辑和制…

云计算基础-虚拟化概述

虚拟化概述 虚拟化是一种资源管理技术,能够将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来并可供分割、组合为一个或多个逻辑上的资源。这种技术通过在计算机硬件上创建一个抽象层,将单台…

【从Python基础到深度学习】 8. VIM两种状态

一、安装 sudo apt install vim 二、VIM两种模式 - 命令状态/编辑状态 1.1 进入/退出VIM 进入VIM vim 退出vim :q <enter> 2.2 根目录下添加配置文件 window下创建vimrc类型文件内容如下&#xff1a; set nu set cursorline set hlsearch set tabstop4 使用Wins…

linux tree命令找不到:如何使用Linux Tree命令查看文件系统结构

Linux tree命令是一个用于显示文件夹和文件的结构的工具&#xff0c;它可以帮助用户更好地理解文件系统的结构。如果你在linux系统上找不到tree命令&#xff0c;那么可能是因为你的系统中没有安装tree命令。 解决方案 Linux tree命令是一个用于显示文件夹和文件的结构的工具&…

14-k8s控制器资源-rs控制器replicasets

replicaset副本控制器&#xff0c;简称&#xff1a;rs控制器&#xff1b; 用法&#xff1a;与rc控制器“几乎”相同&#xff1b; 能力&#xff1a;可以指定pod的副本始终存活&#xff0c;相比于rc控制器&#xff1b;支持标签匹配&#xff0c;也支持标签表达式 注意&#xff1a;…

MongoDB聚合操作符:$acosh

$acosh操作符返回给定值的反双曲余弦。 语法 { $acosh: <expression> }$acosh的可以接受解析为1到正无穷之间数字的表达式&#xff0c;即 1 < value < ∞。$acosh返回值以弧度为单位&#xff0c;使用$radiansToDegrees操作符可以把输出值由弧度转换为角度。缺省情…

ssm的网上招聘系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; ssm的网上招聘系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMv…

SQL语言1

创建数据库 CREATE DATABASE 展示数据库 SHOW DATABASE 整数 INT 有小数点的数 DECIMA(m, n) #m是有几位数&#xff0c;n是有几位小数 字符串 VARCHAR(n) &#xff08;Binary Large Object&#xff09;图片 影片 BLOB ‘YYYY-MM-DD’日期 DATA YYYY-MM-DD HH:MM:SS 记…

platformio 提示 fatal error: TimeLib.h: No such file or directory 的解决方案

在platformio编译arduino项目的时候&#xff0c;如果提示fatal error: TimeLib.h: No such file or directory&#xff0c;解决方法有2&#xff1a; 方法1&#xff1a; 在项目的platformio.ini文件中&#xff0c;添加 lib_deps # Using library Id44方法2&#xff1a; 通过…

java的面向对象编程(oop)——认识枚举

前言 打好基础&#xff0c;daydayup! 枚举 1&#xff0c;认识枚举&#xff1a; 枚举是一种特殊类&#xff0c;用enum语句修饰。与普通类不同的是&#xff1a;枚举类的第一行只能写一些合法的标识符&#xff08;名称&#xff09;&#xff0c;多个名称用逗号隔开。这些标识符&a…

后端接口如何部署到前端

先跑通后端 把后端接口路径写入前端两个env.js中的BASE_API 这里以后要替换成个人域名,目前就可以对前端进行打包,改了代码记得先重新打包

安卓TextView 拖动命名

需求&#xff1a;该布局文件使用线性布局来排列三个文本视图和一个按钮&#xff0c;分别用于显示两个动物名称以及占位文本视图。在占位文本视图中&#xff0c;我们为其设置了背景和居中显示样式&#xff0c;并用其作为接收拖放操作的目标 效果图&#xff1b; 实现代码 第一布…

Spring-面试题

一、Spring 1、Spring的优势 通过IOC、AOP简化java开发 IOC减低业务对象替换的复杂性,降低耦合AOP允许将一些通用的事务、日志进行集中处理,从而提高更好的复用性Spring生态圈低嵌入式涉及,代码污染小高度开放性,用的人多2、Spring的核心 IOC控制反转: Spring容器为我们创…

如何查找Windows的桌面文件夹?这里提供详细步骤

当你的电脑上有不同的用户时&#xff0c;Windows 11、10、…上的桌面文件夹或桌面目录特别有用&#xff0c;那么哪里才是真正的桌面文件夹目录。 自己的Windows桌面目录 1、启动Windows资源管理器 2、按F4键并输入%UserProfile% 3、点击桌面 这是你个人桌面的正确文件夹路径…

【送码】【IOS付费榜92名】春节不打烊,功德加倍攒

整体效果概览图 船新玩法&#xff0c;换个姿势攒功德 竞品玩法 过于简单&#xff1a;都是敲敲&#xff0c;然后设置里换换木鱼样式、音色等 本APP玩法 功德上云&#xff1a;敲击之后&#xff0c;会将所积攒的功德上传至fo祖云端 功德可视化&#xff1a;每日功德、3D功德地…

Calendar的使用(Java)

直接从需求来理解&#xff1a;将2024年2月16日增加一个月 如果不使用Calendar的话&#xff0c;我们需要定义字符串记住这个日期&#xff0c;然后把字符串解析成Date日期对象&#xff0c;通过Date日期对象获取其毫秒值&#xff0c;然后增加一个月的毫秒值&#xff0c;再格式化时…

东莞添威电子开关电源测控软件开发

加我微信hezkz17&#xff0c;可学习嵌入式开关电源开发技术进答疑群 1 ATE 2 开关电源产品