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

Android开发系列(九)Jetpack Compose之ConstraintLayout

    ConstraintLayout是一个用于构建复杂布局的组件。它通过将子视图限制在给定的约束条件下来定位和排列视图。

使用ConstraintLayout,您可以通过定义视图之间的约束关系来指定它们的位置。这些约束可以是水平和垂直的对齐、边距、宽度和高度等。这允许您创建灵活而响应式的布局,可以根据屏幕大小和设备方向进行自动适应。

    ConstraintLayout使用单独的库,因此使用之前需要添加依赖。

implementation "androidx.constraintlayout:constraintlayout-compose:1.0.1"

   下面通过示例来了解ConstraintLayout的使用方法。

    在ConstraintLayout的作用域中,通过createRefs创建索引。子视图通过constrainAs关联索引。在上面的示例中,Button关联索引button,Text关联索引text。

    Text被Button约束,显示在Button的下面,并且离Button有16dp的距离。

在上面的例子中,可以看到约束条件与组件耦合在一起,这样不容易让这个约束重复利用,其实可以把这些约束代码解耦出来,示例如下。

@Composable
fun DecoupledConstraintLayout() {BoxWithConstraints {val constraints = if (maxWidth < 500.dp) {decoupledConstraints(margin = 6.dp)} else {decoupledConstraints(margin = 32.dp)}ConstraintLayout(constraints) {Button(onClick = { /* Do something */ },modifier = Modifier.layoutId("button")) {Text("Button")}Text("Text", Modifier.layoutId("text"))}}
}private fun decoupledConstraints(margin: Dp): ConstraintSet {return ConstraintSet {val button = createRefFor("button")val text = createRefFor("text")constrain(button) {top.linkTo(parent.top, margin = margin)}constrain(text) {top.linkTo(button.bottom, margin)}}
}

    在解耦的实现中,通过layoutId指定某个视图的id,在约束实现中,通过createRefFor为某个id创建索引,有了索引,即可对视图建立约束关系。

以上便是ConstraintLayout的常见用法,示例代码已经上传到github,地址如下

示例代码工程地址 

相关文章:

Android开发系列(九)Jetpack Compose之ConstraintLayout

ConstraintLayout是一个用于构建复杂布局的组件。它通过将子视图限制在给定的约束条件下来定位和排列视图。 使用ConstraintLayout&#xff0c;您可以通过定义视图之间的约束关系来指定它们的位置。这些约束可以是水平和垂直的对齐、边距、宽度和高度等。这允许您创建灵活而响…...

SpringMVC系列三: Postman(接口测试工具)

接口测试工具 &#x1f49e;Postman(接口测试工具)Postman介绍Postman是什么Postman相关资源Postman安装Postman快速入门Postman完成Controller层测试其它说明 &#x1f49e;课后作业 上一讲, 我们学习的是SpringMVC系列二: 请求方式介绍 现在打开springmvc项目 &#x1f49e…...

项目实训-vue(十二)

项目实训-vue&#xff08;十二&#xff09; 文章目录 项目实训-vue&#xff08;十二&#xff09;1.概述2.处理进度可视化 1.概述 本篇博客将记录我在图片上传页面中的工作。 2.处理进度可视化 除了导航栏之外&#xff0c;我们还需要对上传图片以及图片处理的过程以及流程进行…...

达梦数据库的系统视图v$lock

达梦数据库的系统视图v$lock 在达梦数据库&#xff08;DM&#xff09;中&#xff0c;V$LOCK 系统视图用于查看当前数据库中的锁定状态。该视图提供了关于所有锁定详细信息&#xff0c;例如锁的内存地址、所属事务 ID&#xff0c;锁类型和锁模式等。这对于数据库管理员进行锁定…...

【无人机三维路径规划】基于树木生长算法TGA实现复杂城市地形下无人机避障三维航迹规划附Matlab代码

% 定义无人机起始位置和目标位置 start_point [0, 0, 0]; % 起始位置 [x, y, z] target_point [100, 100, 100]; % 目标位置 [x, y, z] % 定义城市地形和障碍物信息 city_map imread(‘city_map.png’); % 城市地形图像 obstacles [ 20, 30, 10; % 障碍物1位置 [x, y, z] …...

制造业工厂的管理到底有多难

一、引言 随着全球经济的不断发展&#xff0c;制造业作为实体经济的核心&#xff0c;对国家的经济增长起着至关重要的作用。然而&#xff0c;制造业工厂的管理却是一项复杂而艰巨的任务。本文将深入探讨制造业工厂管理所面临的挑战&#xff0c;并提出相应的应对策略。 二、制造…...

QTday5 2024-06-19

作业要求&#xff1a; 1.思维导图 2.整理代码&#xff1a;TCP服务器 作业1&#xff1a;思维导图 作业2&#xff1a;整理代码 运行代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QList>…...

Node官网下载各个版本

node官网下载各个版本地址 例如 14.16.0 Index of /download/release/v14.16.0/...

备战秋招day4

算法 242. 有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {int[] count new int[26];for(int i 0;i<s.length();i){count[s.charAt(i)-a];}for(int i 0;i<t.length();i){count[t.charAt(i)-a]--;if(count[t.charAt(i)-a]<0){r…...

【华为OD机试B卷】服务器广播、需要广播的服务器数量(C++/Java/Python)

题目 题目描述 服务器连接方式包括直接相连&#xff0c;间接连接。 A和B直接连接&#xff0c;B和C直接连接&#xff0c;则A和C间接连接。 直接连接和间接连接都可以发送广播。 给出一个N*N数组&#xff0c;代表N个服务器&#xff0c; matrix[i][j] 1&#xff0c; 则代表i和j直…...

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;手机屏幕表面缺陷检测数据集&#xff0c;真实采集高质量手机屏幕表面含缺陷图片数据&#xff0c;数据集含多款不同型号和品牌的手机屏幕表面图片数据&#xff0c;包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…...

语音相关算法学习整理

最近看了一下百度paddlespeech的一些公开课&#xff0c;把课程里的视频内容大体听了一下&#xff0c;现在整理一下笔记。教程链接见&#xff1a;飞桨AI Studio星河社区-人工智能学习与实训社区 语音识别的过程可以这样简单概括&#xff1a; 将声音信号经过预加重、加窗、fft等…...

[C#] opencvsharp对Mat数据进行序列化或者反序列化以及格式化输出

【简要介绍】 在OpenCVSharp中&#xff0c;FileStorage类用于将数据&#xff08;包括OpenCV的Mat类型数据&#xff09;序列化为XML或YAML格式的文件&#xff0c;以及从这些文件中反序列化数据。以下是关于FileStorage类用法的详细说明&#xff1a; 写入数据&#xff08;序列化…...

Linux中的TCP与UDP:理解两者的差异

在计算机网络的世界中&#xff0c;TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;是两种至关重要的传输层协议。它们就像是我们日常生活中的通信方式&#xff0c;有着不同的使用场景和优缺点。通过一个简单的比喻&#xff0c;我们可以更…...

通信系统网络架构_1.局域网网络架构

当今&#xff0c;通信网络从大的方面主要包括局域网、广域网、移动通信网等网络形式。不同的网络会采用不同的技术进行网络构建。以下针对不同的网络给出各自的网络架构以及所采用的技术。 1.概述 局域网&#xff0c;即计算机局部区域网络&#xff0c;是一种为单一机构所拥有的…...

Pycharm 启动 Django项目 —— python篇

1、打开你的工程&#xff0c;在菜单栏里找到Run-->Edit Configurations 2、在打开的对话框里边选择Python&#xff0c;点击号 3.选择Python 4.出现了一个新的项Unnamed&#xff0c;你可以把它改名叫debug&#xff0c;好听一点 5.脚本选择你网站的manage.py&#xff0c;脚本参…...

6-47选择整数计算

整数计算&#xff1a; 用swing组件来实现整数计算&#xff0c;需要对整数计算的值进行校验。 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class IntegerCalculator extends JFrame implements ActionListener {private JCheckBox[] checkBoxe…...

什么是Redis?|介绍与使用及特点浅记

Redis简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一种基于内存、支持持久化的键值对存储系统&#xff0c;具有丰富的数据结构和高性能的特性。它不仅可以作为数据库&#xff0c;还可以作为缓存和消息中间件使用。Redis是单线程模型&#xff0c;但利用IO多路…...

LeetCode题练习与总结:只出现一次的数字Ⅱ--137

一、题目描述 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1&#xff1a; 输入&#xff1a;n…...

Live Wallpaper Themes 4K Pro for Mac v19.9 超高清4K动态壁纸

Live Wallpaper & Themes 4K Pro for Mac v19.7 是一款专为Mac用户设计的超高清4K动态壁纸应用程序。它凭借出色的视觉效果和丰富的个性化设置&#xff0c;为用户带来全新的桌面体验。 这款软件提供了大量精美的动态壁纸供用户选择&#xff0c;涵盖了各种风格和主题&#…...

Simple Runtime Window Editor:突破游戏窗口限制的终极解决方案

Simple Runtime Window Editor&#xff1a;突破游戏窗口限制的终极解决方案 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾为游戏内置分辨率选项太少而烦恼&#xff1f;是否想在窗口模式下获得全屏游戏…...

百度网盘直链解析工具:告别限速,实现高速下载的Python解决方案

百度网盘直链解析工具&#xff1a;告别限速&#xff0c;实现高速下载的Python解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字资源共享日益频繁的今天&#xff…...

3分钟上手RePKG:轻松提取Wallpaper Engine壁纸资源的终极指南

3分钟上手RePKG&#xff1a;轻松提取Wallpaper Engine壁纸资源的终极指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经遇到过这样的困扰&#xff1f;在Wallpaper Engi…...

基于PyPortal与CircuitPython的物联网游戏数据显示器开发实战

1. 项目概述 如果你和我一样&#xff0c;既是《英雄联盟》的忠实玩家&#xff0c;又对嵌入式硬件开发充满热情&#xff0c;那么把这两者结合起来&#xff0c;做一个能实时展示自己召唤师等级的“实体奖杯”&#xff0c;绝对是一件既酷又有成就感的事情。这个项目就是基于Adafr…...

终极免费换肤方案:R3nzSkin国服版完整使用教程

终极免费换肤方案&#xff1a;R3nzSkin国服版完整使用教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服免费体验所有皮肤&#x…...

基于意图与技能解耦的智能对话系统构建指南

1. 项目概述&#xff1a;一个意图与技能驱动的AI对话引擎最近在折腾AI应用开发&#xff0c;特别是对话型AI助手时&#xff0c;发现一个核心痛点&#xff1a;如何让AI不仅能理解用户说了什么&#xff08;意图识别&#xff09;&#xff0c;还能精准地调用相应的功能&#xff08;技…...

基于React的记忆管理UI组件库:openclaw-memory-ui实战指南

1. 项目概述&#xff1a;一个为记忆管理而生的开源UI组件库最近在折腾一个需要处理大量结构化记忆数据的项目&#xff0c;比如知识库、笔记应用或者智能助手的历史对话管理。这类应用的核心痛点在于&#xff0c;数据本身是复杂的、多维的&#xff0c;但传统的列表或表格展示方式…...

开源容器镜像仓库cc-hub:从协议兼容到生产部署的完整实践指南

1. 项目概述&#xff1a;一个面向容器化应用的开源镜像仓库最近在整理团队内部的容器镜像管理方案时&#xff0c;我重新审视了开源镜像仓库这个领域。虽然市面上有 Harbor、Docker Registry 等成熟方案&#xff0c;但总有一些场景&#xff0c;比如轻量级内网部署、特定架构&…...

AI赋能安全分析:hexstrike-ai项目实战与提示词工程详解

1. 项目概述&#xff1a;一个为安全研究而生的AI助手如果你是一名安全研究员、逆向工程师或者渗透测试人员&#xff0c;那么你肯定对“工具链”这个词深有体会。我们的工作台就像是一个复杂的车间&#xff0c;摆满了IDA Pro、Ghidra、x64dbg、Burp Suite、Wireshark……这些工具…...

【Clickhouse从入门到精通】第03篇:ClickHouse适用场景深度剖析

上一篇【第02篇】ClickHouse横空出世——天下武功唯快不破 下一篇【第04篇】ClickHouse生态全景与生产实践者巡礼 摘要 技术选型是数据架构设计的核心命题。再优秀的工具&#xff0c;若用错了场景&#xff0c;也会事倍功半。ClickHouse 以"极速分析查询"著称&#x…...