android - 居中对齐视图而不与 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
,但它似乎不起作用(仍然重叠)。
任何帮助,将不胜感激。
解决方案
推荐阅读
- symfony - 带有值对象的 API 平台自定义 IRI
- rust - 在 Rust 中,切片总是需要指针吗?
- javascript - 使用jquery在可编辑表中获取数据
- c# - 从 .NET Core 2.2 升级到 .NET 5 时,为什么 ModelState 字典中的 ContentType 为空?
- maven - Nifi工件可见性/依赖管理
- vue.js - 如何在 Cordova 应用程序中授予后台更新权限
- ios - URL 失败:“message://” - 错误:“此应用不允许查询方案消息”
- kotlin - kotlin 中的 Mapstruct @Mapping(expression="...")
- reactjs - Chartjs 3.5.0 - 雷达图 - 将标签转换为图像
- python - 将4个坐标分成多个点,间隔两公里