首页 > 解决方案 > 居中对齐视图而不与 Android 上的其他视图重叠

问题描述

我有一个带有两个孩子的简单 Android 视图,我想将第二个与父视图居中对齐,而不会重叠。使用约束布局,我们可以:

<!-- First view -->
app:layout_constraintTop_toTopOf="parent"

<!-- Second view -->
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"

当两个视图都比较短的时候,我们可以很容易的得到我们想要的:

----------------
| --------     |
| |Text  |     |
| --------     |
|              |
| -----------  |
- |Some text|  -
| -----------  |
|              |
|              |
|              |
|              |
----------------

但是,因为两个视图都可以任意高,并且我们不希望它们重叠,所以第二个视图需要在必要时向下移动:

----------------
| -----------  |
| |Text     |  |
| |Text     |  |
| |More text|  |
| -----------  |
- ------------ -
| |Other text| |
| |Text      | |
| ------------ |
|              |
|              |
----------------

我尝试添加layout_constraintTop_toBottomOf="@+id/first"到第二个视图,但这不起作用。添加marginTop具有第一个视图高度的 a 也不起作用,因为这将使第二个视图在剩余空间中居中。这可以通过约束布局(或其他布局)来实现吗?

我还尝试通过更改第二个视图中的布局约束以编程方式执行此操作 OnLayoutChangeListener,但它似乎不起作用(仍然重叠)。

任何帮助,将不胜感激。

标签: androidandroid-constraintlayout

解决方案


推荐阅读