Android开发 ConstraintLayout布局的详解
<h1><span style="color: rgba(0, 128, 128, 1)">版权声明</span></h1><p>本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/16583531.html</p>
<div>本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。</div>
<h1><span style="color: rgba(0, 128, 128, 1)">前言</span></h1>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)"> 这篇博客其实拖了很久,原因是我早就已经彻底掌握了ConstraintLayout的使用,没有动力记录我已经特别熟练的技能了,所以一直懒得在写博客了。 但是,觉得还是应该系统的整理一篇博客帮助他人学习。</span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)">在学习之前还是先要了解下约束布局的优势:</span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)"> 1.嵌套少,性能提高。因为View位置是互相关联的,所以不需要像线性布局一样需要有很多父类容器辅助View定位。</span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)"> 2.更快的编写xml布局,提高工作效率。熟练后可以使用Android studio快速拖拉组件来实现布局,但是前期建议好好了解ConstraintLayout的属性</span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)"> 3.View的定位灵活度更大,可以动态的跟随其他View的位置改变而改变。<br></span></p>
<p><span style="color: rgba(0, 0, 0, 1); background-color: rgba(255, 255, 255, 1)"> 4.可阅读性强,这点可能很多人会质疑:“一堆View平铺有什么阅读性啊”。 但是事实是,嵌套多层的线性布局或者相对布局反而更难以阅读,因为你需要关注父类布局提供的辅助定位信息。</span></p>
<h1><span style="color: rgba(0, 128, 128, 1); background-color: rgba(255, 255, 255, 1)">学习定位属性</span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">这里的定位属性指的是 layout_constraintTop_toTopOf 、layout_constraintTop_toBottomOf 、 layout_constraintStart_toEndOf 等等此类属性。</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">为了方便后续理解,这里说明下此类定位属性的意思。此类定位属性在文本上想表达的是<strong> 当前View</strong> 在 <strong>定位View</strong> 什么位置上。</span></p>
<p><span style="color: rgba(0, 0, 0, 1)">这里举几个例子,例如:</span></p>
<p><strong><span style="color: rgba(0, 0, 0, 1)">layout_constraintTop_toBottomOf </span></strong><span style="color: rgba(0, 0, 0, 1)"> 这个属性的意思是 当前View的上边(Top)在 目标View的下边(Bottom)</span></p>
<p><strong><span style="color: rgba(0, 0, 0, 1)">layout_constraintTop_toTopOf </span></strong><span style="color: rgba(0, 0, 0, 1)">这个属性的意思是 当前View的上边(Top) 在 目标View的上边(Top)</span></p>
<p> </p>
<p><strong>这个时候估计有人会疑问,什么是当前View,什么是定位View啊。</strong></p>
<p><strong>当前View是指</strong>:你添加了 layout_constraintTop_toBottomOf 这个属性的View</p>
<p><strong>定位View是指</strong>:app:layout_constraintTop_toBottomOf="@id/quit" 后面添加的id ,这里@id/quit 就是定位的View。 所以,使用约束布局还有一个特点就是基本上每一个View都要写上id。</p>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintTop_toBottomOf 当前View的Top在目标View的Bottom</span></h2>
<p><span style="color: rgba(0, 0, 0, 1)">效果图(注意图片中的箭头):</span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813165836579-2043883262.png" alt=""></span></p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<p>方便观看这里增加了上边距50dp</p>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintBottom_toTopOf当前View的Bottom在目标View的Top</span></h2>
<p><span style="color: rgba(0, 0, 0, 1)">效果图:</span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813180728786-1686725227.png" alt=""></span></p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginBottom</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintLeft_toRightOf 与 </span><span style="color: rgba(0, 128, 128, 1)">layout_constraintStart_toEndOf 当前View的Left在目标View的Right</span></h2>
<p>layout_constraintLeft_toRightOf 与 layout_constraintStart_toEndOf 这2个属性其实都是一个意思,都是当前View的Left在目标View的Right。</p>
<p>为什么google会设计2个功能一样的属性呢? 因为阿拉伯语,我们正常的阅读习惯是从左到右,而阿拉伯语的习惯是从右到左。所以语言切换后整体View的布局位置也要跟随改变。当时,如果你只开发国内App其实用2个之间的任意一个属性都可以。</p>
<p><span style="color: rgba(0, 0, 0, 1)">效果图</span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813170616115-1654278761.png" alt=""></span></p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<p>在上面我使用了Start_toEndOf <strong>所以效果图上按键2的</strong><strong>左边依附在按键的右边上,但是因为Top_toBottomOf的关系,按键2的上边又在按键1的下边上。</strong></p>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintRight_toLeftOf 与 layout_constraintEnd_toStartOf 当前View的Right在目标View的Left</span></h2>
<p><span style="color: rgba(0, 0, 0, 1)">与上面的差不多,举一反三也可以理解。</span></p>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813174444355-125311758.png" alt=""></p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintTop_toTopOf 当前View的Top在目标View的Top</span></h2>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>这里要介绍一个关键字 parent</strong></span>,<strong><span style="color: rgba(255, 0, 0, 1)">parent会经常使用</span>。</strong>当前View想依附到ConstraintLayout 布局本身的四个边的位置上时,就可以使用parent。 例如希望一个按钮依附到ConstraintLayout 上边 就可以 使用 app:layout_constraintTop_toTopOf="parent"</p>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813175408920-2023876372.png" alt=""></p>
<p> xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginStart</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>这里按键1依附了父类布局ConstraintLayout 的 左边与上边, 按键2布局也写入 app:layout_constraintTop_toTopOf="@+id/btn1" 依附在按键1的上边。 这里可以看到按键2即使没有写layout_marginTop="20dp" 也依然与按键1的top边对齐。</p>
<h2><span style="color: rgba(0, 128, 128, 1)">layout_constraintBottom_toBottomOf 当前View的Bottom在目标View的Bottom</span></h2>
<p>与上面的差不多,举一反三也也可以理解。</p>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813180341260-1037385283.png" alt=""></p>
<p> xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="80dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginStart</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">约束布局下View的宽高0dp </span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">在ConstraintLayout下 0dp 有一个特别的功能。让View根据定位属性填满高度或者宽度。</span></p>
<h2><span style="color: rgba(0, 0, 0, 1)">例子1</span></h2>
<p><span style="color: rgba(0, 0, 0, 1)">效果图:</span></p>
<p><span style="color: rgba(0, 0, 0, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813183316845-309755321.png" alt=""></span></p>
<p> xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>效果图里可以看到按键1的宽度根据定位属性被填满了</p>
<h2>例子2</h2>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220813183546539-107869724.png" alt=""></p>
<p> xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="20dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginBottom</span><span style="color: rgba(0, 0, 255, 1)">="600dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="background-color: rgba(255, 255, 255, 1); color: rgba(0, 128, 128, 1)">layout_constraintHorizontal_chainStyle 与 layout_constraintVertical_chainStyle 间隙均分属性</span></h1>
<p>layout_constraintHorizontal_chainStyle 与 layout_constraintVertical_chainStyle 一个是作用在横向一个是作用在竖向,二者没有区别。所以这里只举例横向Horizontal不在重复举例竖向。</p>
<p>layout_constraintHorizontal_chainStyle 是将两个与两个以上的View,在一个水平角度上互相定位后产生水平上的间隙均分关联。间隙均分的类型一共有三种:spread_inside 、spread、packed</p>
<h2>spread_inside效果图:</h2>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220815115117298-1355370489.png" alt=""></p>
<p> xml</p>
<p>请注意,下面的3个按键的左右定位关系都是互相关联的。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintHorizontal_chainStyle</span><span style="color: rgba(0, 0, 255, 1)">="spread_inside"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn3"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h2>spread效果图:</h2>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220815115300705-1321226172.png" alt=""></p>
<h2>packed效果图:</h2>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220815115401515-1176045859.png" alt=""></p>
<h2>发散例子:如果想让按键均分铺满整个水平角度</h2>
<p>效果图</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220815115531609-1699677.png" alt=""></p>
<p> xml</p>
<p>需要在对应水平角度的宽度或者高度上设置为0dp</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintHorizontal_chainStyle</span><span style="color: rgba(0, 0, 255, 1)">="packed"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn3"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">layout_constraintVertical_weight 与layout_constraintHorizontal_weight 按比例均分空间</span></h1>
<p>此属性需要配合layout_constraintHorizontal_chainStyle 与 layout_constraintVertical_chainStyle 间隙均分属性一起使用。并且使用的时候需要将对应方向的宽或者高设置为0dp。</p>
<p>xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout </span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
tools:context</span><span style="color: rgba(0, 0, 255, 1)">=".ui.MainActivity"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">View
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/text1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/holo_orange_light"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/text2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintVertical_chainStyle</span><span style="color: rgba(0, 0, 255, 1)">="packed"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintVertical_weight</span><span style="color: rgba(0, 0, 255, 1)">="0.2"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">View
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/text2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/holo_red_dark"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/text3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/text1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintVertical_weight</span><span style="color: rgba(0, 0, 255, 1)">="0.4"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">View
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/text3"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/holo_green_light"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/text2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintVertical_weight</span><span style="color: rgba(0, 0, 255, 1)">="0.6"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>效果图,在上面的属性中高度的分别设置比例是,text1=20% text2=40% text3=60%:</p>
<p><img src="https://img2023.cnblogs.com/blog/1497956/202301/1497956-20230114121015377-164209357.png" alt=""></p>
<h1><span style="color: rgba(0, 128, 128, 1)">layout_constraintWidth_percent 与 layout_constraintHeight_percent 按照百分比设置宽高</span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">请注意,实际的占据空间的百分比是设置了 layout_constraintTop_toTopOf 与 layout_constraintBottom_toBottomOf 后范围空间的百分比。 </span></p>
<p><span style="color: rgba(0, 0, 0, 1)">xml</span></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
tools:context</span><span style="color: rgba(0, 0, 255, 1)">=".ui.MainActivity"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintHeight_percent</span><span style="color: rgba(0, 0, 255, 1)">="0.5"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintWidth_percent</span><span style="color: rgba(0, 0, 255, 1)">="0.5"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>上面设置了宽高都是50%的效果图:</p>
<p><img src="https://img2023.cnblogs.com/blog/1497956/202301/1497956-20230114120138767-1750679042.png" alt=""></p>
<h1><span style="color: rgba(0, 128, 128, 1)">layout_constraintDimensionRatio 设置高宽百分比</span></h1>
<p> 这是一个在手机端app开发特别有用的属性,可以依靠此属性按照比例让View适配不同手机的屏幕到达一个统一的效果。</p>
<h2>View的高度和宽度1比1</h2>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822201759029-613029071.png" alt=""></p>
<p> </p>
<p> </p>
<p> xml</p>
<p>这里让按键的宽度跟随设备宽度。但是高度是与宽度一比一的。</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintDimensionRatio</span><span style="color: rgba(0, 0, 255, 1)">="H,1:1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2>View的高度是宽度的0.5</h2>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822202008312-253950746.png" alt=""></p>
<p> </p>
<p> </p>
<p> xml</p>
<p>注意这里使用的是W</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintDimensionRatio</span><span style="color: rgba(0, 0, 255, 1)">="W,0.5:1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">宽度与高度的最大最小限制</span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">一共有四条属性</span></p>
<ul>
<li>app:layout_constraintWidth_max="100dp" 设置最大宽度</li>
<li>app:layout_constraintWidth_min="50dp" 设置最小宽度 </li>
<li>app:layout_constraintHeight_max="50dp" 设置最大高度</li>
<li>app:layout_constraintHeight_min="50dp" 设置最小高度</li>
</ul>
<h2>限制最大宽度</h2>
<p>效果图:</p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822203002783-1108553909.png" alt=""></span></p>
<p> </p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="200dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)"> app:layout_constraintWidth_max</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2>限制最小宽度</h2>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822202915918-982887701.png" alt=""></p>
<p> </p>
<p> </p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)"> <br> app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintWidth_min</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">androidx.constraintlayout.widget.Guideline 辅助线</span></h1>
<p> </p>
<p>androidx.constraintlayout.widget.Guideline辅助线View是不显示,用处很大。他们的意义是可以帮我们少写大量的android:layout_margin 外边距属性</p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>另外注意使用android:orientation可以设置辅助线的水平方向</strong></span></p>
<h2>layout_constraintGuide_percent 百分比属性下的使用</h2>
<p> 效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822203714831-661089352.png" alt=""></p>
<p>xml</p>
<p>以百分比数值作为辅助线的位置</p>
<p> </p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.Guideline
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:orientation</span><span style="color: rgba(0, 0, 255, 1)">="vertical"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintGuide_percent</span><span style="color: rgba(0, 0, 255, 1)">="0.25"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="200dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2>layout_constraintGuide_begin 以dp数值设置开始方向的辅助线位置</h2>
<p> 效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822204036148-489799306.png" alt=""></p>
<p> </p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.Guideline
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:orientation</span><span style="color: rgba(0, 0, 255, 1)">="vertical"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintGuide_begin</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="200dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h2>layout_constraintGuide_end 以dp数值设置结束方向的辅助线位置</h2>
<p> 效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822204152352-999676002.png" alt=""></p>
<p> </p>
<p> xml</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.Guideline
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:orientation</span><span style="color: rgba(0, 0, 255, 1)">="vertical"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintGuide_end</span><span style="color: rgba(0, 0, 255, 1)">="150dp"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="200dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/guideline2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">constraintlayout.widget.Barrier 障碍线</span></h1>
<p>androidx.constraintlayout.widget.Barrier 障碍线View是不显示。它的作用是与多View产生关联并且始终保持在长度最长的那个View上。可能很难理解,但是看下面的动图就很好理解了。</p>
<p>这个View的关键属性是</p>
<p>app:barrierDirection="end" 这是让barrier根据view的那个方向设置障碍</p>
<p>app:constraint_referenced_ids="" 需要设置的view的id</p>
<p>效果图:</p>
<p>图片中按键3的左边是依赖了barrier这个View的</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220822210213102-1703908756.gif" alt=""></p>
<p>xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout </span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="300dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="150dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
android:visibility</span><span style="color: rgba(0, 0, 255, 1)">="visible"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.Barrier
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/barrier"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
app:barrierDirection</span><span style="color: rgba(0, 0, 255, 1)">="end"</span><span style="color: rgba(255, 0, 0, 1)">
app:constraint_referenced_ids</span><span style="color: rgba(0, 0, 255, 1)">="btn1,btn2"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn3"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键3"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/barrier"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">layout_goneMarginStart 、layout_goneMarginTop 相邻View隐藏后的外边距设置</span></h1>
<p>一共有6个属性</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginBottom"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginEnd"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginLeft"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginRight"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginStart"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">attr </span><span style="color: rgba(255, 0, 0, 1)">format</span><span style="color: rgba(0, 0, 255, 1)">="dimension"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="layout_goneMarginTop"</span><span style="color: rgba(0, 0, 255, 1)">/></span></pre>
</div>
<p>效果图:</p>
<p> <img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220824155835076-65927584.gif" alt=""></p>
<p>xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout </span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
android:visibility</span><span style="color: rgba(0, 0, 255, 1)">="gone"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_goneMarginTop</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">constraintlayout.widget.Group 将多个View编组</span></h1>
<p> 一般情况下多用于管理多个view的显示与隐藏</p>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220824160847627-1939236408.gif" alt=""></p>
<p>xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键1"</span><span style="color: rgba(255, 0, 0, 1)">
android:visibility</span><span style="color: rgba(0, 0, 255, 1)">="gone"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">Button
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn2"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="0dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="按键2"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_goneMarginTop</span><span style="color: rgba(0, 0, 255, 1)">="50dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@+id/btn1"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.Group
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/group"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:visibility</span><span style="color: rgba(0, 0, 255, 1)">="visible"</span><span style="color: rgba(255, 0, 0, 1)">
app:constraint_referenced_ids</span><span style="color: rgba(0, 0, 255, 1)">="btn1,btn2"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)">layout_constraintCircle 以圆形实现View的排列</span></h1>
<p>效果图:</p>
<p><img src="https://img2022.cnblogs.com/blog/1497956/202208/1497956-20220824163455064-224651532.png" alt=""></p>
<p>xml</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><?</span><span style="color: rgba(255, 0, 255, 1)">xml version="1.0" encoding="utf-8"</span><span style="color: rgba(0, 0, 255, 1)">?></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">xmlns:android</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res/android"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:app</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/apk/res-auto"</span><span style="color: rgba(255, 0, 0, 1)">
xmlns:tools</span><span style="color: rgba(0, 0, 255, 1)">="http://schemas.android.com/tools"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/white"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="时钟中心"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginTop</span><span style="color: rgba(0, 0, 255, 1)">="300dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span> <span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/zero"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="0"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="0"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/one"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="30"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/two"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="2"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="60"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/three"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="3"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="90"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/four"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="4"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="120"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/five"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="5"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="150"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/six"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="6"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="180"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/seven"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="7"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="210"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/eight"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="240"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/nine"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="9"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="270"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/ten"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="10"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="300"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">TextView
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/eleven"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="wrap_content"</span><span style="color: rgba(255, 0, 0, 1)">
android:text</span><span style="color: rgba(0, 0, 255, 1)">="11"</span><span style="color: rgba(255, 0, 0, 1)">
android:textColor</span><span style="color: rgba(0, 0, 255, 1)">="@android:color/black"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircle</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleRadius</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintCircleAngle</span><span style="color: rgba(0, 0, 255, 1)">="330"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)">这里可以搞一张时钟图片来旋转</span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout
</span><span style="color: rgba(255, 0, 0, 1)">android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="match_parent"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="500dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:rotationY</span><span style="color: rgba(0, 0, 255, 1)">="0.5"</span><span style="color: rgba(255, 0, 0, 1)">
android:rotationX</span><span style="color: rgba(0, 0, 255, 1)">="0.5"</span><span style="color: rgba(255, 0, 0, 1)">
android:rotation</span><span style="color: rgba(0, 0, 255, 1)">="30"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="@id/clockCenter"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">View
</span><span style="color: rgba(255, 0, 0, 1)">android:id</span><span style="color: rgba(0, 0, 255, 1)">="@+id/minute"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_width</span><span style="color: rgba(0, 0, 255, 1)">="2dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_height</span><span style="color: rgba(0, 0, 255, 1)">="80dp"</span><span style="color: rgba(255, 0, 0, 1)">
android:background</span><span style="color: rgba(0, 0, 255, 1)">="@color/black"</span><span style="color: rgba(255, 0, 0, 1)">
android:layout_marginBottom</span><span style="color: rgba(0, 0, 255, 1)">="100dp"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintTop_toTopOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintStart_toStartOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintEnd_toEndOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(255, 0, 0, 1)">
app:layout_constraintBottom_toBottomOf</span><span style="color: rgba(0, 0, 255, 1)">="parent"</span><span style="color: rgba(0, 0, 255, 1)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">androidx.constraintlayout.widget.ConstraintLayout</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h1><span style="color: rgba(0, 128, 128, 1)"> 关于插入布局include不与约束条件有关联的问题</span></h1>
<p><span style="color: rgba(0, 0, 0, 1)">加上 android:layout_width 与 android:layout_height 就能解决问题</span></p>
<p><span style="color: rgba(0, 128, 128, 1)"><img src="https://img2023.cnblogs.com/blog/1497956/202303/1497956-20230307170445242-1013174773.png" alt=""></span></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>End</p>
</div>
<div id="MySignature" role="contentinfo">
<div style="text-align: center">
<p style="color:orange;font-size:16px;" >本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/16583531.html </p>
<div style="color:orange;font-size:16px;">本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。 </div>
</div><br><br>
来源:https://www.cnblogs.com/guanxinjing/p/16583531.html
頁:
[1]