如何使ConstraintLayout使用百分比值?

在Android Studio 2.2的预览版1中,Google在其支持库中发布了一个新布局: ConstraintLayout 。 使用ConstraintLayout在Android Studio中使用devise工具更容易,但是我没有find使用相对大小(百分比或LinearLayout中的“权重”)的方法。 有没有一种方法来定义基于百分比的约束? 例如,使视图占用40%的屏幕,在视图之间创build20%的边距,将视图的宽度设置为另一个视图宽度的50%?

您目前可以通过几种方法来完成此操作。 一个是创build指南(右键单击devise区域,然后单击添加垂直/水平指南)。 然后,您可以点击指南的“标题”,将定位更改为基于百分比。 最后,您可以将视图限制在指南中。 另一种方法是使用偏差(百分比)定位视图,然后将其他视图定位到该视图。

也就是说,我们一直在考虑如何提供基于百分比的维度。 我不能做出任何承诺,但是这是我们想补充的。

这里有一个快速参考可能是有用的。
使用:一个指南与app:layout_constraintGuide_percent像这样:

 <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="1dp" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5"/> 

然后,您可以将此指南用作其他视图的定位点。

指导是非常宝贵的 – 和app:layout_constraintGuide_percent是一个伟大的朋友…但是有时我们想要没有指导的百分比。 现在可以使用权重

 android:layout_width="0dp" app:layout_constraintHorizontal_weight="1" 

这是一个更完整的例子,使用一个额外的权重的指导方针:

 <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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" android:padding="16dp" tools:context="android.itomerbu.layoutdemo.MainActivity"> <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.44"/> <Button android:id="@+id/btnThird" android:layout_width="0dp" app:layout_constraintHorizontal_weight="1" android:layout_height="wrap_content" android:text="@string/btnThird" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginBottom="8dp" app:layout_constraintRight_toLeftOf="@+id/btnTwoThirds" app:layout_constraintBottom_toTopOf="@+id/guideline" android:layout_marginStart="8dp" android:layout_marginLeft="8dp"/> <Button android:id="@+id/btnTwoThirds" app:layout_constraintHorizontal_weight="2" android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/btnTwoThirds" app:layout_constraintBottom_toBottomOf="@+id/btnThird" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toRightOf="@+id/btnThird"/> </android.support.constraint.ConstraintLayout> 

从“ConstraintLayout1.1.0-beta1”开始,可以使用百分比来定义宽度和高度。

 android:layout_width="0dp" app:layout_constraintWidth_default="percent" app:layout_constraintWidth_percent=".4" 

这将把with定义为屏幕宽度的40%。 这和百分比的组合允许你创build任何你想要的基于百分比的布局。

如何使用指南

接受的答案是有关如何使用指南和“标题”是什么有点不清楚。

脚步

首先添加一个指导。

在这里输入图像说明

selectGuidline或者稍微移动它来使约束可见。

在这里输入图像说明

然后点击圆圈(“标题”),直到它变成一个百分比。 然后,您可以将这个百分比降低到50%或任何你想要的。

在这里输入图像说明

之后,您可以将您的视图限制在指导方针中,使其达到父级的某个百分比(在视图上使用match_constraint )。

在这里输入图像说明

你可以在linearlayout使用app:layout_constraintVertical_weight它和layout_weight相同

 <android.support.constraint.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"> <Button android:id="@+id/button4" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Button" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/button5" app:layout_constraintVertical_weight="1"/> <Button android:id="@+id/button5" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Button" app:layout_constraintLeft_toRightOf="@+id/button4" app:layout_constraintRight_toRightOf="parent" app:layout_constraintVertical_weight="1"/> </android.support.constraint.ConstraintLayout> 

注: app:layout_constraintVertical_weightapp:layout_constraintHorizontal_weight )将与android:layout_width="0dp"android:layout_height="0dp"