首页 > 编程知识 正文

constraintlayout的使用,属于constraintlayout布局新特性的是

时间:2023-05-06 05:38:50 阅读:208837 作者:3093

文章目录 布局介绍开始使用androidx配置有趣功能效果展示完整代码 参考博文个人总结

布局介绍

ConstraintLayout约束布局的出现是为了简化布局嵌套,减少绘制时间,提高绘制效率,可以在api>9的Android机器上使用,更主要的是约束布局可以尽情地让你发挥拖拽的本领,在界面上添加约束,抛开繁琐的xml布局,当然它也可以用xml进行布局

开始使用 androidx配置

在Android Studio2.3以后,新建Project的时候默认布局就是约束布局,不过却是support库下的约束布局,这里我们可以切换成androidx库下的约束布局,切换方法如下:
1、配置一下gradle.properties

android.useAndroidX=trueandroid.enableJetifier=true

2、执行Refactor -> Migrate to AndroidX 重构>迁移到Androidx操作,然后会弹出一个菜单,默认勾选备份项目文件,如果不想备份,可以取消勾选,然后点击Migrate按钮即可开始迁移,之后可以去module下build.gradle中修改一下版本号,当然也可以不修改,修改只是为了用最新版本的库

有趣功能

1、相对定位

android:id="@+id/tv2" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toRightOf="@+id/tv1"

第一行代码的意思是让tv2在父布局的左边,第二行代码的意思是让tv2在tv1的右边,并且tv1在tv2的左边

2、角度定位

android:id="@+id/tv6" app:layout_constraintCircle="@id/tv5" app:layout_constraintCircleAngle="70" app:layout_constraintCircleRadius="100dp"

第一行代码的意思是tv6以tv5为圆心
第二行代码的意思是tv6以tv5为圆心的基础上偏移角度70度,竖直方向是零度,顺时针旋转
第三行代码的意思,tv6以tv5为圆心的基础上偏移角度70度,并且在距离圆心100dp的位置上,这样就能固定一个控件的位置

3、辅助工具
(1)GuideLines
就是用来精确的寻找居中位置,最好通过百分比来确定

添加完以后可以通过点击GuideLine最上方的三角来改变单位为百分比

(2)自动添加约束
a、AutoConnect:自动为某一个控件添加约束
b、Infer:自动为界面所有元素添加合适的约束

效果展示


完整代码 <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello2" app:layout_constraintLeft_toRightOf="@+id/tv1" app:layout_constraintTop_toTopOf="parent" app:layout_goneMarginLeft="100dp" /> <TextView android:id="@+id/tv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello3" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv1" /> <TextView android:id="@+id/tv4" android:layout_width="wrap_content" android:layout_height="40dp" android:gravity="center_vertical" android:text="12345" app:layout_constraintEnd_toEndOf="@+id/tv5" app:layout_constraintStart_toEndOf="@+id/tv5" app:layout_constraintTop_toBottomOf="@+id/tv3" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="54321" app:layout_constraintBaseline_toBaselineOf="@+id/tv4" app:layout_constraintLeft_toRightOf="@+id/tv4" app:layout_constraintTop_toBottomOf="@+id/tv3" /> <TextView android:id="@+id/tv5" android:layout_width="wrap_content" android:layout_height="40dp" android:gravity="center_vertical" android:text="tv5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv4" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="38dp" android:layout_marginLeft="38dp" android:layout_marginTop="6dp" android:text="tv12345" app:layout_constraintCircle="@id/tv5" app:layout_constraintCircleAngle="70" app:layout_constraintCircleRadius="100dp" app:layout_constraintStart_toStartOf="@+id/textView" app:layout_constraintTop_toTopOf="@+id/textView" /> <TextView android:id="@+id/tv6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="tv6" app:layout_constraintHorizontal_bias="0.7" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv5" /> <TextView android:id="@+id/tv7" android:layout_width="0dp" android:layout_height="wrap_content" android:text="tv1111117" app:layout_constraintDimensionRatio="w,3:1" app:layout_constraintStart_toStartOf="@+id/tva" app:layout_constraintTop_toBottomOf="@+id/tv6" /> <TextView android:id="@+id/tva" android:layout_width="0dp" android:layout_height="wrap_content" android:text="tva" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintHorizontal_weight="4" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/tva2" app:layout_constraintTop_toBottomOf="@+id/tv7" /> <TextView android:id="@+id/tva2" android:layout_width="0dp" android:layout_height="wrap_content" android:text="tva2" app:layout_constraintHorizontal_weight="1" app:layout_constraintLeft_toRightOf="@+id/tva" app:layout_constraintRight_toLeftOf="@+id/tva3" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv7" /> <TextView android:id="@+id/tva3" android:layout_width="0dp" android:layout_height="wrap_content" android:text="tva3" app:layout_constraintHorizontal_weight="4" app:layout_constraintLeft_toRightOf="@+id/tva2" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv7" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="64dp" android:text="Button" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/guideline2" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" app:layout_constraintBottom_toBottomOf="@+id/button" app:layout_constraintStart_toStartOf="@+id/guideline2" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_begin="20dp" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button6" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="401dp" /> <Button android:id="@+id/button7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" tools:layout_editor_absoluteY="467dp" /></androidx.constraintlayout.widget.ConstraintLayout> 参考博文

1、Android新特性介绍,ConstraintLayout完全解析
2、约束布局ConstraintLayout看这一篇就够了

个人总结

1、耦合性较高,改一发而动全身,特别是相对定位那一块
2、自主性较强,想放哪儿放哪儿

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。