gpt4 book ai didi

android - 在 RelativeLayout 中设置 minHeight,禁用 alignBaseline?

转载 作者:太空宇宙 更新时间:2023-11-03 10:19:56 25 4
gpt4 key购买 nike

我的 RelativeLayout 应该看起来更像这样:

+----------------------------------------------+
| |
| |
|+----------------+ +----------------+|
|| |+--------+| ||
|| View 1 || View 2 || View 3 ||
|+----------------++--------++----------------+|
| |
| |
+----------------------------------------------+

当我的相对布局具有固定高度(例如 80dp)时,我可以完美地实现它。不幸的是,我需要它有 android:layout_height="wrap_content"android:minHeight 设置(例如那些 80dp)。当我以这种方式更改我的布局时,android:layout_alignBaseline 似乎不适用于 View2,并且我得到了类似于此的内容:

+----------------------------------------------+
| |
| +--------+ |
|+----------------+| View 2 |+----------------+|
|| |+--------+| ||
|| View 1 | | View 3 ||
|+----------------+ +----------------+|
| |
| |
+----------------------------------------------+

我的 xml 看起来像这样:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="80dp" >

<TextView
android:id="@+id/View1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/View2"
android:gravity="center"
android:text="View1" />

<TextView
android:id="@+id/View2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/View1"
android:layout_centerHorizontal="true"
android:gravity="center"
android:text="View2" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/View2"
android:gravity="center"
android:text="View3" />

</RelativeLayout>

有人知道为什么它不起作用吗?

最佳答案

经过几次测试后,我得出结论,在 RelativeLayout 中将高度设置为 wrap_content 只是有问题。它无法与未填满整个布局高度的 View 正确协作。对于这种 View ,RelativeLayout 存在垂直居中问题(规则 CENTER_VERTICALCENTER IN PARENT)。基本上,应该垂直居中的 View 将按原样显示,但布局本身将“看到”它们(为了设置其他规则)作为顶部对齐.

因此,将任何规则设置为依赖于那些“错误地被布局感知”的 View 的位置,将导致以意想不到的方式显示 View 。

如果考虑到这一点,我的案例就很容易解释了。这是 View 的显示方式:

+----------------------------------------------+
| |
| +--------+ |
|+----------------+| View 2 |+----------------+|
|| |+--------+| ||
|| View 1 | | View 3 ||
|+----------------+ +----------------+|
| |
| |
+----------------------------------------------+

这就是 RelativeLayout “感知”它们的方式:

+----------------------------------------------+
|+----------------+ +----------------+|
|| |+--------+| ||
|| View 1 || View 2 || View 3 ||
|+----------------++--------++----------------+|
| |
| |
| |
| |
+----------------------------------------------+

(View 2 在两张图片中的位置相同)。

因为我需要我的布局是 RelativeLayout,为了解决这个问题我决定完全放弃使用 wrap_content 值,并自己控制 View 的高度。它使我的布局有点复杂,但只要我控制它,就没问题。

关于android - 在 RelativeLayout 中设置 minHeight,禁用 alignBaseline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com