ConstraintLayout 特殊用法详解

1.使用百分比设置间距

     app:layout_constraintHorizontal_bias="0.4"   水平偏移(0-1)
     app:layout_constraintVertical_bias="0.4"     垂直偏移 (0-1)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  ..."><TextViewandroid:layout_width="10dp"android:layout_height="10dp"app:layout_constraintHorizontal_bias="0.4"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

2.使用角度设置控件的位置
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout ..."><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/red"android:text="A"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.4"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/><TextViewandroid:id="@+id/tv2"android:layout_width="50dp"android:layout_height="50dp"android:background="@color/blue"android:text="B"app:layout_constraintCircle="@+id/tv1"app:layout_constraintCircleAngle="45"app:layout_constraintCircleRadius="175dp"/></androidx.constraintlayout.widget.ConstraintLayout>

3.设置宽高比例

注意:这个属性需要 宽高至少有一个属性设置成0dp,否则无效。
app:layout_constraintDimensionRatio="2:1"  //宽度:高度 2:1
app:layout_constraintDimensionRatio="2.0" //宽度:高度 2:1
 
//宽度是高度的1.2倍 W表示宽度通过比值计算得来
app:layout_constraintDimensionRatio="W,1.2"//两个效果相同
app:layout_constraintDimensionRatio="W,1.2:1"//两个效果相同
android:layout_width="0dp"
android:layout_height="130dp"

//高度是宽度的1.2倍 H表示宽度通过比值计算得来
app:layout_constraintDimensionRatio="H,1.2"//两个效果相同
app:layout_constraintDimensionRatio="H,1.2:1"//两个效果相同
android:layout_width="130dp"
android:layout_height="0dp"

4.间距在控件隐藏下也起作用
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  ..><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:text="A"android:visibility="visible"/><TextViewandroid:id="@+id/tv2"android:layout_width="50dp"android:layout_height="50dp"android:layout_marginStart="10dp"android:text="B"app:layout_constraintLeft_toRightOf="@id/tv1"app:layout_goneMarginStart="50dp"/></androidx.constraintlayout.widget.ConstraintLayout>

在控件tv1隐藏的情况下,app:layout_goneMarginStart="50dp" 这个50dp也有效果

5.Group  对一组控件同时隐藏或显示

用法:app:constraint_referenced_ids="控件id1,控件id2"

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  ...><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:text="A"/><TextViewandroid:id="@+id/tv2"android:layout_width="100dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:text="B"app:layout_constraintLeft_toRightOf="@id/tv1"tools:ignore="MissingConstraints"/><androidx.constraintlayout.widget.Groupandroid:id="@+id/group1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="visible"app:constraint_referenced_ids="tv1,tv2"/></androidx.constraintlayout.widget.ConstraintLayout>

通过设置group1控件,来控制tv1、tv2的显示与隐藏

6.Flow 流式布局
//水平方向之间的间距
app:flow_horizontalGap="10dp"//垂直方向之间的间距
app:flow_verticalGap="10dp"//流布局属性 : none chain aligned
app:flow_wrapMode="aligned"none: 水平方向 超出屏幕不显示(默认)chain:水平方向 超出屏幕换行 换行后的View平分下一行aligned:水平方向 超出屏幕换行 换行后的View 挨着显示
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout  ...><TextViewandroid:id="@+id/tv1"android:layout_width="80dp"android:layout_height="80dp"android:text="A"/><TextViewandroid:id="@+id/tv2"android:layout_width="80dp"android:layout_height="80dp"android:text="B"android:layout_marginLeft="10dp"/><TextViewandroid:id="@+id/tv3"android:layout_width="80dp"android:layout_height="80dp"android:text="C"android:layout_marginLeft="10dp"/><TextViewandroid:id="@+id/tv4"android:layout_width="80dp"android:layout_height="80dp"android:text="D"android:layout_marginLeft="10dp"/><TextViewandroid:id="@+id/tv5"android:layout_width="80dp"android:layout_height="80dp"android:text="E"android:layout_marginLeft="10dp"/><androidx.constraintlayout.helper.widget.Flowandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:constraint_referenced_ids="tv1,tv2,tv3,tv4,tv5"app:flow_horizontalGap="10dp"app:flow_verticalGap="10dp"app:flow_wrapMode="aligned"/></androidx.constraintlayout.widget.ConstraintLayout>
app:flow_wrapMode="none",效果如下

app:flow_wrapMode="aligned",效果如下

app:flow_wrapMode="chain",效果如下

7.Flow 流式布局对齐方式

//对齐方向 :top bottom  center  baseline
app:flow_verticalAlign="xxx"

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ConstraintLayoutActivity"><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/cardview_dark_background"android:gravity="center"android:text="A"android:textColor="#FFFFFF"/><TextViewandroid:id="@+id/tv2"android:layout_width="100dp"android:layout_height="160dp"android:layout_marginLeft="10dp"android:background="@color/design_default_color_error"android:gravity="center"android:text="B"android:textColor="#FFFFFF"/><TextViewandroid:id="@+id/tv3"android:layout_width="100dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:background="@color/cardview_dark_background"android:gravity="center"android:text="C"android:textColor="#FFFFFF"tools:ignore="MissingConstraints"/><TextViewandroid:id="@+id/tv4"android:layout_width="100dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:background="@color/design_default_color_error"android:gravity="center"android:text="D"android:textColor="#FFFFFF"tools:ignore="MissingConstraints"/><TextViewandroid:id="@+id/tv5"android:layout_width="100dp"android:layout_height="100dp"android:layout_marginLeft="10dp"android:background="@color/cardview_dark_background"android:gravity="center"android:text="E"android:textColor="#FFFFFF"tools:ignore="MissingConstraints"/><androidx.constraintlayout.helper.widget.Flowandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:constraint_referenced_ids="tv1,tv2,tv3,tv4,tv5"app:flow_horizontalGap="10dp"app:flow_verticalGap="10dp"app:flow_wrapMode="chain"app:flow_verticalAlign="top"tools:ignore="MissingConstraints"/></androidx.constraintlayout.widget.ConstraintLayout>
app:flow_verticalAlign="top"

app:flow_verticalAlign="center" or "baseline"

8.Flow 流式布局约束每行数量个数

//flow_wrapMode 为aligned或者chian时 指定每行个数
app:flow_maxElementsWrap="2" ,如图:

app:flow_maxElementsWrap="3" ,如图:

9.Guideline 参考线,控件以这个作为参考物布局,但是这个线不会显示

//对齐方式 vertical&horizontal
android:orientation="vertical"
 
//距离父布局宽度或高度的百分比 [0,1]
app:layout_constraintGuide_percent="0.5"
 
//距离父布局起始位置的距离 xxdp
app:layout_constraintGuide_begin="10dp"
 
//距离父布局结束位置的距离 xxdp
app:layout_constraintGuide_end="10dp"

 <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ConstraintLayoutActivity"><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"app:layout_constraintGuide_percent="0.2" /><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/cardview_dark_background"android:gravity="center"android:text="A"android:textColor="#FFFFFF"app:layout_constraintLeft_toRightOf="@id/guideline"/></androidx.constraintlayout.widget.ConstraintLayout>

如图:

<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout ..><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"...android:orientation="horizontal"app:layout_constraintGuide_percent="0.2" /><TextViewandroid:id="@+id/tv1"...app:layout_constraintTop_toBottomOf="@id/guideline"/>
</..>

如图:

10.Barrier 控制Barrier相对于给定的View的位置

用法取值: left right  top  bottom  start  end
app:barrierDirection="end"

//取值是要依赖的控件的id
app:constraint_referenced_ids

 <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout ...><TextViewandroid:id="@+id/tv1"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/cardview_dark_background"android:gravity="center"android:text="A"android:textColor="#FFFFFF"app:layout_constraintStart_toStartOf="parent"/><TextViewandroid:id="@+id/tv2"android:layout_width="160dp"android:layout_height="160dp"android:background="@color/design_default_color_error"android:gravity="center"android:text="B"android:textColor="#FFFFFF"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/tv1"/><androidx.constraintlayout.widget.Barrierandroid:id="@+id/barrier"android:layout_width="wrap_content"android:layout_height="wrap_content"app:barrierDirection="end"app:constraint_referenced_ids="tv1,tv2" /><TextViewandroid:id="@+id/tv3"android:layout_width="100dp"android:layout_height="130dp"android:layout_marginLeft="10dp"android:background="@color/design_default_color_primary_dark"android:gravity="center"android:text="C"android:textColor="#FFFFFF"app:layout_constraintLeft_toRightOf="@id/barrier"/>
</...>

如图:


 
11.ImageFilterView  图片滤镜效果、也调整图片为圆角图片

图片叠加效果:

src:背景层的图片;
altSrc:组件上层显示的图片,默认不显示,因为它的透明度为0;
crossfade:调节altSrc中图片的透明度,数值从0-1.默认值为0,表示全透明,1表示不透明

    <androidx.constraintlayout.utils.widget.ImageFilterViewandroid:src="@drawable/background"app:altSrc="@drawable/foreground"app:crossfade="0.8"/>
 
 

图片圆角效果:

  1.  app:round="100dp"     //通过长度来控制圆角的弧度(取值0-size/2之间)

  2.  app:roundPercent="0.4"  //通过百分比来控制圆角的弧度(取值0-1之间,默认0无圆角)

<androidx.constraintlayout.utils.widget.ImageFilterViewandroid:src="@mipmap/ic_launcher"app:altSrc="@mipmap/heart_rate"app:crossfade="0.5"app:roundPercent="0.4"android:layout_height="100dp"android:layout_width="100dp"android:id="@+id/iv1"/>

设置之后---》

滤镜效果:

app:saturation:饱和度。默认值为1,0为灰阶样式,大于1的数值都是超饱和状态

设置之后---》


app:brightness:亮度。默认值为1,值越大亮度越高。

设置之后---》


app:warmth:色温。默认值为1,小于1是冷色调,大于1是暖色调。

 设置之后---》

app:contrast:对比度。默认值为1,为0时图片全黑,大于1的数值都是高对比度状态。

设置之后---》

app:overlay:定义alt图像是在原始图像的顶部淡入,还是与其交叉淡入。默认值为true。对于半透明对象设置为false。

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

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

相关文章

第18章 基于经验的测试技术

一、错误猜想法 &#xff08;一&#xff09;概念 错误推算法基于测试人员对以往测试项目中一些经验测试程序中的错误测试程序时&#xff0c;人们可根据经验或直觉推测程序中可能存在的各种错误&#xff0c;然后有针对性地编写检查这些错误的测试用例的方法 &#xff08;二&a…

使用MATLAB/Simulink点亮STM32开发板LED灯

使用MATLAB/Simulink点亮STM32开发板LED灯-笔记 一、STM32CubeMX新建工程二、Simulink 新建工程三、MDK导入生成的代码 一、STM32CubeMX新建工程 1. 打开 STM32CubeMX 软件&#xff0c;点击“新建工程”&#xff0c;选择中对应的型号 2. RCC 设置&#xff0c;选择 HSE(外部高…

LeetCode 69—— x 的平方根

阅读目录 1. 题目2. 解题思路一3. 代码实现一4. 解题思路二5. 代码实现二 1. 题目 2. 解题思路一 二分查找法&#xff0c;对于整数 i ∈ [ 0 , x ] i \in [0,x] i∈[0,x]&#xff0c;我们判断 i 2 i^2 i2 和 x x x 的关系&#xff0c;然后找到最后一个平方小于等于 x x x …

【 书生·浦语大模型实战营】作业(六):Lagent AgentLego 智能体应用搭建

【 书生浦语大模型实战营】作业&#xff08;六&#xff09;&#xff1a;Lagent & AgentLego 智能体应用搭建 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方…

35.Docker-数据卷,目录挂载

注意&#xff1a;在容器内修改文件是不推荐的。 1.修改不方便&#xff0c;比如vi命令都无法使用。 2.容器内修改&#xff0c;没有日志记录的。 问题&#xff1a;那应该如何修改容器中的文件呢&#xff1f; 数据卷 volume是一个虚拟目录&#xff0c;指向宿主机文件系统中的…

如何把学浪的视频保存到手机

你是不是还在为无法将学浪的视频保存到手机而烦恼&#xff1f;别担心&#xff0c;接下来我将为大家分享一个非常实用的方法&#xff0c;让你轻松实现这一目标&#xff01; 下载学浪的工具我已经打包好了&#xff0c;有需要的自己下载一下 学浪下载工具打包链接&#xff1a;百…

一加12/11/10/Ace2/Ace3手机上锁回锁BL无限重启黑屏9008模式救砖

一加12/11/10/Ace2/Ace3手机官方都支持解锁BL&#xff0c;搞机的用户也比较多&#xff0c;相对于其他品牌来说&#xff0c;并没有做出限制&#xff0c;这也可能是搞机党最后的救命稻草。而厌倦了root搞机的用户&#xff0c;就习惯性回锁BL&#xff0c;希望彻底变回官方原来的样…

研究论文的蓝图:精通论文大纲的编写技巧

研究论文大纲是一个补充文件&#xff0c;描述了按计划顺序纳入论文的所有主题&#xff0c;通常按段落分割。正常的研究论文大纲包括额外的细节&#xff0c;例如子主题和证据来源&#xff0c;以帮助作者保持结构。本文讨论了研究论文大纲的内容以及如何撰写。 研究论文大纲的含…

C#语言入门

一、基础知识 1. 程序语言是什么 用于人和计算机进行交流&#xff0c;通过程序语言让计算机能够响应我们发出的指令 2. 开发环境 IDE&#xff0c;集成开发环境。它就是一类用于程序开发的软件&#xff0c;这一类软件一般包括了代码编辑、编译器、调试器、图形用户界面等等工…

STM32独立看门狗,实现单片机自动重启

今天学习了一下独立看门狗&#xff0c;看门狗的主要作用就是防止程序中有死循环或是不知道的bug&#xff0c;而造成在while循环中没有及时喂狗&#xff0c;程序就会控制单片机重启复位&#xff0c;从而不至于影响程序一直不能正常工作。 其实看门狗的应用也不是很复杂&#xf…

1020. 【USACO题库】2.1.1 The Castle城堡

题目描述 以一个几乎超乎想像的运气,农民约翰在他的生日收到了一张爱尔兰博彩的奖券。 这一张奖券成为了唯一中奖的奖券。 农民约翰嬴得爱尔兰的乡下地方的一个传说中的城堡。 吹牛在他们威斯康辛州不算什么,农民约翰想告诉他的牛所有有关城堡的事。 他想知道城堡有多少房间…

光伏光热一体化技术PVT

1、PVT集热器简介 太阳能光伏光热一体化组件主要由光伏与光热两个部分组成。光伏部分采用技术成熟的太阳能光伏面板&#xff0c;通过控制系统为建筑提供所需电能&#xff0c;主要包括光伏电池、蓄电池、逆变器和控制器等构件。光热部分主要为集热器&#xff0c;将太阳能转换为热…

力扣例题(接雨水)

链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路&#xff1a; 判断一块地方是否可以接到雨水&#xff0c;只需要判断他是否有左右边界使他可以接到水 左右边界分别为此处左侧的最高点和右侧的最高点 同时此处可接雨水的高度为左右两…

基于Pytorch深度学习——GPU安装/使用

本文章来源于对李沐动手深度学习代码以及原理的理解&#xff0c;并且由于李沐老师的代码能力很强&#xff0c;以及视频中讲解代码的部分较少&#xff0c;所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉&#xff0c;所以我们会采用逐行解释小…

《QT实用小工具·四十九》QT开发的轮播图

1、概述 源码放在文章末尾 该项目实现了界面轮播图的效果&#xff0c;包含如下特点&#xff1a; 左右轮播 鼠标悬浮切换&#xff0c;无需点击 自动定时轮播 自动裁剪和缩放不同尺寸图片 任意添加、插入、删除 单击事件&#xff0c;支持索引和自定义文本 界面美观&#xff0c;圆…

开源免费的网盘项目Cloudreve,基于Go云存储个人网盘系统源码(七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive)

项目简介&#xff1a; 在现今的网盘服务中&#xff0c;用户经常遭遇限速和价格上涨的问题&#xff0c;这无疑增加了使用上的困扰。 为此&#xff0c;我今天要介绍一款开源且免费的网盘项目——Cloudreve。 这个项目是基于Go语言开发的云存储个人网盘系统&#xff0c;支持多种…

[笔试训练](十二)

目录 034:删除公共字符串 035:两个链表的第一个公共节点 036:mari和shiny 034:删除公共字符串 删除公共字符_牛客题霸_牛客网 (nowcoder.com) 题解: 用哈希记录好第二个字符串中的字符&#xff0c;再遍历一遍第一个字符串&#xff0c;只将没有记录的字符加在结果字符串上。…

[C++][数据结构]哈希1:哈希函数的介绍与线性探测的实现

前言 学完了二叉树&#xff0c;我们要学当前阶段数据结构的最后一个内容了&#xff1a;哈希&#xff01;&#xff01; 引入 先来介绍两个用哈希封装的两个容器&#xff1a;unordered_map unordered_set 与map和set的不同&#xff1a; map/set是双向迭代器&#xff0c;而另…

【已解决】VSCode 连接远程 Ubuntu :检测到 #include 错误。请更新 includePath。

文章目录 1. 环境声明2. 解决过程 1. 环境声明 即使是同一个报错&#xff0c;在不同的环境中&#xff0c;报错原因、解决方法都是不同的&#xff0c;本文只能解决跟我类似的问题&#xff0c;如果你发现你跟我遇到的问题不太一样&#xff0c;建议寻找其他解法。 必须要吐槽的是…

STD10A230XCB电源模块STD05A230XCB整流模块介绍

STD10A230XCB电源模块STD05A230XCB整流模块介绍&#xff0c;直流屏电源模块STD05A230XCB&#xff0c;整流模块STD10A115XCB&#xff0c;STD20A115XCB&#xff0c;STD10A230X&#xff0c;STD05A230X&#xff0c;直流屏充电模块的关键词: 电力智能高频开关充电模块STD20A230XCB,高…