首页 > 编程知识 正文

qsharedpointer用法,add constraint用法

时间:2023-05-04 04:23:32 阅读:148495 作者:2497

之前介绍了ConstraintLayout的使用方法,使用ConstraintLayout的时候请一定要执行,然后用智能手机看看结果。 虽然在AS上看有时没有问题,但是运行到智能手机上又会得到不同的效果。

然后,本文将介绍ConstraintLayout的Chain即链条,以及ConstraintLayout辅助线Guideline的使用。

什么是Chains链? 简单来说,就是一个链条连接在同一个轴(水平或垂直)上,让他们统一行动。

在理解链条之前,让我们先写一篇关于链条的作用和强大功能的栗子吧。 以下布局由几个不同的选项卡组成: 每行的选项卡是一个链,每行是不同的样式:

实现的代码如下所示。 某些属性已被省略。

! - weight chain---textview Android 3360 id=' @ id/weightstart ' Android 3360 layout _ width=' 0dp ' app 3360 layout _ co weight center ' Android 3360 layout _ width=' 0dp ' app : layout _ constraint horizontal textview Android 3360 id=' @ id/weight end ' Android 3360 layout _ width=' 0dp ' app : layout _ constraint horizontal _ 0dp ' app 3360 layout _ constraint hont d=' @ id/spread start ' app : layout _ constraint bottom _ toto POF=' @ id/weightstart ' app : layout _ constraint spreadcenter ' app : layout _ constraintstart _ to sto start textview Android 3360 id=' @ id/spreadcenter '/textview Android - packed chain---textview Android : id=' @ id/packed start ' app : layout _ constraint horizontal _ chainstyle='。 - spread _ inside chain---textview Android : id=' @ id/inside start ' app : layout _ constraint horizontal _ chaid - packedchainwithbias---- textview Android : id=' @ id/packedbiasstart ' app : layout _ constraint horizontal _ bias=' 0.2 ' app : layout _ constraint horizontal _ chainstylion 从packedbiascenter '/textview Android : id=' @ id/packedbiasend ' /中可以看出,有五种类型的操作,每一行:

Creating a chain怎么做链条? 当两个控件双向链接时,如下图所示,a和b中的两个链加上a和b两个控件称为链。

下面的代码将两个按钮链接在一起成为一个chain。 省略某些属性。

Butto

n android:id="@+id/upload" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/discard" app:layout_constraintStart_toStartOf="parent" /> <Button android:id="@+id/discard" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/upload" />

Chain heads

什么是链头,一个链条里面的第一个元素即为头,水平最左边,垂直最上边的控件,链头的作用是控制整个链条的属性,如上面的A控件就是链头。

Margins in chains

在链头上面设置margin,整个链条都会响应这个margin,比如设置链头的一个左边android:layout_marginStart="10dp",这整个链条都会响应这个margin:

Chain Style

链条可以设置不同的style,通过设置下面两个属性分别设置水平或者垂直:

layout_constraintHorizontal_chainStylelayout_constraintVertical_chainStyle

而style包括三种:

spread(默认)-元素被分散开

spread_inside-与spread类似,只是链条的端点不会被分散

packed-链条内的元素将被捆在一起

同时还有两种组合,在链条里面,可以使用weight和bias:

spread + weight-将元素的尺寸设置为MATCH_CONSTRAINT时,可以与weight平分空间

packed + bias- 前面说过bias是偏重的意思,这里就是将链条集体偏重。

在文章一开始,我们就写好了包含的所有的style,不明白的可以往上面重新看,至于省略的代码,写一下就出来了。

Guideline

Guideline是只能用在ConstraintLayout布局里面的一个工具类,用于辅助布局,类似为辅助线,可以设置android:orientation属性来确定是横向的还是纵向的。

当设置为vertical的时候,Guideline的宽度为0,高度是parent也就是ConstraintLayout的高度同样设置为horizontal的时候,高度为0,宽度是parent的宽度

重要的是Guideline是不会显示到界面上的,默认是GONE的。

Guideline还有三个重要的属性,每个Guideline只能指定其中一个:

layout_constraintGuide_begin,指定左侧或顶部的固定距离,如100dp,在距离左侧或者顶部100dp的位置会出现一条辅助线layout_constraintGuide_end,指定右侧或底部的固定距离,如30dp,在距离右侧或底部30dp的位置会出现一条辅助线layout_constraintGuide_percent,指定在父控件中的宽度或高度的百分比,如0.8,表示距离顶部或者左侧的80%的距离。

通过一个栗子便能理解:

<android.support.constraint.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/guidelineBegin" app:layout_constraintGuide_begin="100dp" android:orientation="vertical"/> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" app:layout_constraintLeft_toLeftOf="@+id/guidelineBegin" android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent" /> <android.support.constraint.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/guidelineEnd" app:layout_constraintGuide_end="100dp" android:orientation="vertical"/> <Button android:text="Button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonEnd" app:layout_constraintRight_toLeftOf="@+id/guidelineEnd" android:layout_marginTop="48dp" app:layout_constraintTop_toTopOf="parent" /> <android.support.constraint.Guideline android:id="@+id/guidelinePercent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.8" /> <Button android:text="Button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonPercent" app:layout_constraintLeft_toLeftOf="@+id/guidelinePercent" android:layout_marginTop="96dp" app:layout_constraintTop_toTopOf="parent" />

预览:

bzdqt要用一个控件占屏幕宽度的一半的时候,可以用layout_constraintGuide_percent,如下面代码:

<android.support.constraint.Guideline android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/guidelineBegin" app:layout_constraintGuide_percent="0.5" app:layout_constraintStart_toStartOf="@id/button" android:orientation="vertical"/> <Button android:text="Button" android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@+id/guidelineBegin" android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent" />

效果图:

是不是很简单呢!!!

总结

链条能够很好的帮助我们将几个控件统一管理,同时Guideline能帮我们辅助布局,而不用添加一个其他的View并且设置GONE,Guideline都帮我们实现了。

感谢 ConstraintLayout/ChainsGuidelineConstraintLayout 完全解析 快来优化你的布局吧ConstraintLayout 属性详解 和Chain的使用

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