当前位置: 首页 > 知识库问答 >
问题:

ConstraintLayout和RelativeLayout的区别

凌翔宇
2023-03-14

我对< code>ConstraintLayout和< code>RelativeLayout之间的区别感到困惑。有人能告诉我它们之间的确切区别吗?

共有3个答案

邢晗日
2023-03-14

由@davidpbrConstraintLayoutperformance报告

我制作了两个类似的7个子布局,每个布局都有一个父级<code>ConstraintLayout。基于Android Studio方法跟踪工具,似乎<code>ConstraintLayout</code>花费了更多的时间在onMeasure中,并在<code>onFinishInflate</code>中执行额外的工作。

使用的库(support port-v4appcompat-v7...):

< code > com . Android . support . constraint:constraint-layout:1 . 0 . 0-alpha 1

设备/Android版本转载于:三星Galaxy S6 (SM-G920A。抱歉,没有Nexus atm)。Android5.0.2

追踪和比较的快速方法:

示例 Github 存储库:https://github.com/OnlyInAmerica/ConstraintLayoutPerf

樊琦
2023-03-14

相对布局和约束布局等效属性

(1) 相对布局:

android:layout_centerInParent="true"    

(1) 约束布局等效:

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"

(2)相对布局:

android:layout_centerHorizontal="true"

(2) 约束布局等效:

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintEnd_toEndOf="parent"

(3)相对布局:

android:layout_centerVertical="true"    

(3) 约束布局等效:

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"

(4)相对布局:

android:layout_alignParentLeft="true"   

(4) 约束布局等效:

app:layout_constraintLeft_toLeftOf="parent"

(5)相对布局:

android:layout_alignParentStart="true"

(5)约束布局等效:

app:layout_constraintStart_toStartOf="parent"

(6) 相对布局:

android:layout_alignParentRight="true"

(6)约束布局等效:

app:layout_constraintRight_toRightOf="parent"

(7) 相对布局:

android:layout_alignParentEnd="true"    

(7)约束布局等效:

app:layout_constraintEnd_toEndOf="parent"

(8) 相对布局:

android:layout_alignParentTop="true"

(8)约束布局等效:

app:layout_constraintTop_toTopOf="parent"

(9)相对布局:

android:layout_alignParentBottom="true" 

(9)约束布局等效:

app:layout_constraintBottom_toBottomOf="parent"

(10) 相对布局:

android:layout_alignStart="@id/view"

(10)约束布局等效:

app:layout_constraintStart_toStartOf="@id/view"

(11) 相对布局:

android:layout_alignLeft="@id/view" 

(11) 约束布局等效:

app:layout_constraintLeft_toLeftOf="@id/view"

(12)相对布局:

android:layout_alignEnd="@id/view"  

(12)约束布局等效:

app:layout_constraintEnd_toEndOf="@id/view"

(13)相对布局:

android:layout_alignRight="@id/view"

(13)约束布局等效:

app:layout_constraintRight_toRightOf="@id/view"

(14)相对布局:

android:layout_alignTop="@id/view"  

(14) 约束布局等效:

app:layout_constraintTop_toTopOf="@id/view"

(15) 相对布局:

android:layout_alignBaseline="@id/view" 

(15)约束布局等效:

app:layout_constraintBaseline_toBaselineOf="@id/view"

(16) 相对布局:

android:layout_alignBottom="@id/view"

(16)约束布局等效:

app:layout_constraintBottom_toBottomOf="@id/view"

(17)相对布局:

android:layout_toStartOf="@id/view"

(17) 约束布局等效:

app:layout_constraintEnd_toStartOf="@id/view"

(18)相对布局:

android:layout_toLeftOf="@id/view"  

(18) 约束布局等效:

app:layout_constraintRight_toLeftOf="@id/view"

(19) 相对布局:

android:layout_toEndOf="@id/view"

(19) 约束布局等效:

app:layout_constraintStart_toEndOf="@id/view"

(20) 相对布局:

android:layout_toRightOf="@id/view"

(20)约束布局等效:

app:layout_constraintLeft_toRightOf="@id/view"

(21)相对布局:

android:layout_above="@id/view" 

(21)约束布局等效:

app:layout_constraintBottom_toTopOf="@id/view"

(22)相对布局:

android:layout_below="@id/view" 

(22)约束布局等效:

app:layout_constraintTop_toBottomOf="@id/view"
吕奇
2023-03-14

ConstraintLayout 的目的是通过对每个视图应用一些规则来优化和展平布局的视图层次结构,以避免嵌套。

规则类似于RelativeLayout,例如将底部边缘设置为其他视图的底部。

app:layout_constraintBottom_toBottomOf="@+id/view1"

RelativeLayout不同,ConstraintLayout提供了一个偏差值,用于根据相对于句柄的0%和100%水平和垂直偏移来定位视图(用红圈标记)。这些百分比(和分数)提供了视图在不同屏幕密度和大小中的无缝定位。

app:layout_constraintHorizontal_bias="0.33" <!-- from 0.0 to 1.0 -->
app:layout_constraintVertical_bias="0.53" <!-- from 0.0 to 1.0 -->

基线控制滑块(圆角下方的圆角长管道)用于将视图内容与另一个视图参照对齐。

方形句柄(在视图的每个角落)用于以dps为单位调整视图大小。

这完全是基于意见的,也是我对 ConstraintLayout 的印象

 类似资料:
  • 问题内容: 我对LinearLayout,RelativeLayout和AbsoluteLayout之间的区别感到困惑。有人可以告诉我他们之间的确切区别吗? 问题答案: 表示您可以一一对齐视图(垂直/水平)。 指基于其父母的观点与其他观点之间的关系。 与的相似之处在于它使用关系来定位和调整尺寸小部件,但具有更大的灵活性,并且更易于在布局编辑器中使用。 加载html,静态或动态页面。 FrameLa

  • 6.2.4.RelativeLayout RelativeLayout(相对布局)用于指明子元素之间的相对位置。它十分强大,不需要嵌套就可以实现复杂的布局,同时还可以减少使用的控件的数量,从而提高程序的整体性能。RelativeLayout需要我们为它的每个子元素提供一个ID,你可以单独设置它们的相对位置。

  • 本文向大家介绍Android  AbsoluteLayout和RelativeLayout布局详解,包括了Android  AbsoluteLayout和RelativeLayout布局详解的使用技巧和注意事项,需要的朋友参考一下 Android 线性布局: AbsoluteLayout布局和RelativeLayout布局。  1、绝对布局 AbsoluteLayout 绝对定位Absolute

  • 1.ConstraintLayout基本界面 更新Android Studio 2.2之后,更新了布局设计器,同时,引人了ConstraintLayout,这一布局,旨在降低布局层级,其主要界面如下所示: 这个界面主要分成下面几个部分: 左侧边栏,包括Palette组件库和Component Tree 中间是布局设计器,包括两部分,左边是视图预览,右边是布局约束 右侧边栏,上面是类似盒子模型的边界

  • 我在ScrollView中的ConstraintLayout中有一个floatingActionButton 问题是按钮随UI上下滚动 PS:我不知道这是否重要,但是scrollView在一个drawerLayout里面

  • 使用Android Studio菜单选项重构迁移到Androidx包后- 我收到以下错误: