我有以下xml:
<ImageView
android:id="@+id/iv1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/gray"
android:layout_margin="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/iv2"
app:layout_constraintDimensionRatio="1:1"
/>
<ImageView
android:id="@+id/iv2"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/red"
android:layout_margin="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/iv1"
app:layout_constraintRight_toLeftOf="@id/iv3"
app:layout_constraintDimensionRatio="1:1"
/>
<ImageView
android:id="@+id/iv3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="8dp"
android:background="@color/yellow"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/iv2"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintDimensionRatio="1:1"
/>
在布局预览中给出了以下内容:
但是,我打算让ConstraintLayout
成为RelativeLayout
的孩子,ConstraintLayout
的身高设置为wrap_content
。但设置wrap_content
会导致整个ConstraintLayout
缩小为0。如何让wrap_content
工作?
答案 0 :(得分:1)
Oké,首先你可能不应该在RelativeLayout中放置ConstraintLayout。
其次,如果您的Constraintlayout没有定义的大小并且其childeren也没有定义的大小,则不能“使wrap_content工作”
使这项工作你可以A:将Constraintlayout的高度和宽度设置为100dp或match_parent,或者B:将Constraintlayout的childeren的高度和宽度设置为100dp
100dp就是一个例子
答案 1 :(得分:0)
您可以使用线性布局和权重使其与所有屏幕尺寸兼容。
以下是一个这样的样本,
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="3">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3" />
</LinearLayout>
答案 2 :(得分:0)
您无法直接在ConstraintLayout
中划分屏幕。您必须添加指南以设置ImageView
的最大宽度。您可以获得有关Guideline
here的更多信息。
BTW,根据您在评论部分中描述的需要,您可以使用GuideLine
进行布局,如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/sunriseContainerRL"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- first box end guide-line -->
<android.support.constraint.Guideline
android:id="@+id/firstBoxEndGL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.33" />
<!-- second box end guide-line -->
<android.support.constraint.Guideline
android:id="@+id/secondBoxEndGL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.66" />
<!-- third box end guide-line -->
<android.support.constraint.Guideline
android:id="@+id/thirdBoxEndGL"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.99" />
<ImageView
android:id="@+id/iv1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="8dp"
android:background="@color/colorTimeText"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toStartOf="@+id/firstBoxEndGL"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="8dp"
android:background="@color/colorTimeText"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toStartOf="@+id/secondBoxEndGL"
app:layout_constraintLeft_toRightOf="@+id/iv1"
app:layout_constraintRight_toLeftOf="@+id/iv3"
app:layout_constraintStart_toEndOf="@+id/firstBoxEndGL"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="8dp"
android:background="@color/colorTimeText"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@+id/thirdBoxEndGL"
app:layout_constraintStart_toEndOf="@+id/secondBoxEndGL"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</RelativeLayout>