ConstraintLayout 和 RelativeLayout 的区别

新手上路,请多包涵

我对 ConstraintLayoutRelativeLayout 之间的区别感到困惑。有人可以告诉我它们之间的确切区别吗?

原文由 b2mob 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 980
2 个回答

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

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

 app:layout_constraintBottom_toBottomOf="@+id/view1"

RelativeLayout 不同, ConstraintLayout 提供了一个 bias 值,用于以相对于句柄的 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

原文由 Nikola Despotoski 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

(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"


原文由 Naimatullah 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题