随着Android Studio 2.2的预览1,谷歌在其支持库中发布了一个新的布局:ConstraintLayout。使用ConstraintLayout,在Android Studio中更容易使用设计工具,但我没有找到一种方法来使用相对大小(百分比或“权重”,如线性布局)。是否有一种基于百分比定义约束的方法?例如,让一个视图占屏幕的40%,在视图之间创建20%的空白,将一个视图的宽度设置为另一个视图宽度的50% ?
当前回答
目前有几种方法可以做到这一点。
一种是创建导线(右键单击设计区域,然后单击添加垂直/水平导线)。然后,您可以单击指导方针的“标题”来更改定位为基于百分比。最后,您可以将视图约束为指导方针。
另一种方法是使用偏差(百分比)定位视图,然后将其他视图锚定在该视图上。
也就是说,我们一直在考虑如何提供基于百分比的维度。我不能做任何保证,但这是我们想补充的。
其他回答
使用ConstraintLayout v1.1.2,维度应该设置为0dp,然后将layout_constraintWidth_percent或layout_constraintHeight_percent属性设置为0到1之间的值,例如:
<!-- 50% width centered Button -->
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintWidth_percent=".5" />
(你不需要设置app:layout_constraintWidth_default="percent"或app:layout_constraintHeight_default="percent"与ConstraintLayout 1.1.2和以下版本)
你可以使用app:layout_constraintVertical_weight,它与linearlayout中的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_weight(app:layout_constraintHorizontal_weight)将与android:layout_width="0dp" (android:layout_height="0dp"
对于那些可能发现有用的人,你可以使用layout_constraintDimensionRatio在一个ConstraintLayout内的任何子视图中,我们可以定义高度或宽度的比例,其他维度(至少一个必须是0dp宽度或高度)的例子
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:src="@drawable/top_image"
app:layout_constraintDimensionRatio="16:9"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
在这种情况下,纵横比是16:9 app:layout_constraintDimensionRatio=“16:9”你可以在这里找到更多信息
随着ConstraintLayout v1.1的新版本,你现在可以做以下事情:
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.2"
app:layout_constraintWidth_percent="0.65" />
这将限制按钮为父视图高度的20%和宽度的65%。
如何使用指南
公认的答案是有点不清楚如何使用指导方针和什么是“头”。
步骤
首先添加一个指南。
选择指导方针或移动它一点,使约束可见。
然后点击圆(“标题”),直到它变成一个百分比。然后你可以把这个百分比拖到50%或任何你想要的。
之后,你可以将你的视图约束到guideguide,使其成为父视图的一部分(在视图上使用match_constraint)。
推荐文章
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?
- 如何在Android工作室的外部库中添加一个jar ?
- GridLayout(不是GridView)如何均匀地拉伸所有子元素
- 如何让一个片段删除自己,即它的等效完成()?