我正在尝试在ios上重现一些非常简单的东西。
我想要在运行时确定高度的相同高度的视图。视图的高度应基于具有最大高度的视图。
我发现了一个类似的问题(link),但它基于按钮可能是我的解决方案无效的原因。
示例:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<!--Other views-->
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
<!--Other views-->
</LinearLayout>
</LinearLayout>
也许有一个使用设计师的解决方案。 如果不可能,我想我可能必须通过找到最大高度然后将高度分配给其他视图来以编程方式执行(如果您知道如何操作,我也会接受它作为有效答案)
更新:
我画了两张图片来说明我的问题。灰色区域是父线性布局。绿色区域儿童线性布局。红色区域是&#34;其他视图&#34;正如上面的布局所评论的那样。
答案 0 :(得分:0)
我通过以下调整实现了与第二张图像类似的布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center"
android:layout_margin="20dp"
android:background="@color/colorAccent">
<!--Other views-->
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center"
android:layout_margin="20dp"
android:background="@color/colorAccent">
<!--Other views-->
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_margin="15dp"
android:background="@color/colorPrimary"/>
</LinearLayout>
答案 1 :(得分:0)
你去了
<?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">
<!--The linear layouts are only for representation.
Constraint layout only hs direct children, baring a few.
You can use packed chain for aligning the text views together in
center vertical-->
<LinearLayout
android:id="@+id/left_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/barrier_demo"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/right_layout"
app:layout_constraintTop_toTopOf="parent">
<!--Other views-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="#fff"
android:background="@color/colorPrimary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:background="@color/colorPrimary" />
</LinearLayout>
<LinearLayout
android:id="@+id/right_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/colorAccent"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintLeft_toRightOf="@id/left_layout"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/barrier_demo"
>
<!--Other views-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/colorPrimary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/colorPrimary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/colorPrimaryDark"
android:textColor="#fff" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/colorPrimary"
android:textColor="#fff" />
</LinearLayout>
<android.support.constraint.Barrier
android:id="@+id/barrier_demo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="left_layout,right_layout"
/>
</android.support.constraint.ConstraintLayout>
无论您在文本视图中放置了多少文本,即使左侧的文本开始包含多行文本,也会调整正确的布局。 这是通过约束布局中的障碍来实现的。
This页以极好的方式解释了它。 还有一件事你应该避免在约束布局中嵌套。 垂直中心对齐可以通过包链
来实现This中等文章是一个很好的来源。