相对布局中如何将一个视图居中到另一个视图

3
我有两个视图想要在RelativeLayout中垂直居中。是否有一种方法可以不使用gravity/layout_gravity来实现这一点? 我提出这个问题的原因:
我需要做一个布局,其中包含几个正方形和每个正方形下面的TextView。主要问题是,每个TextView必须重叠。每次只会显示一个TextView。每个TextView的长度都不同。
我开始使用RelativeLayout但遇到了上述问题。而且我不能每两个视图为一组,因为我需要将前一个正方形设为layout_toRightOf。
当前布局:
目前,我已经在每个正方形的layout_marginLeft中设置了一个魔法数字(与父视图的边框相距多少),但这根本不干净。
谢谢

你现在能展示一下你的布局吗? - joao2fast4u
我已经在问题中添加了图片。目前为止,我为每个正方形的layout_marginLeft设置了一个魔法数字(到父视图边界),但这一点都不清晰。 - Helix
2个回答

1
使用android:layout_centerInParent="true"将某些内容居中于RelativeLayout中。
您可以使用android:layout_below="@id/your_first_view"将第二个View放置在第一个下面!
如果您想做更复杂的事情,您可以将不同的视图分开,并将它们存储到新的LinearLayout中,根据您的需求设置为水平或垂直。
另一个技巧是创建具有小高度或宽度的空视图,这可以帮助您在它们周围定位物品!
结合toRightOftoLeftOf等内容,即可实现您想要的效果。

我有几个正方形,所以无法将它们全部居中放置在全局RelativeLayout的中间。 - Helix
我将尝试使用空视图。 - Helix
嗯,这并不是很确定。所以我水平列出了4个空视图,并将我的对象(2个视图)放在每个视图下面。然而,我遇到了同样的问题,我无法将我的对象居中放置在空视图下方。 - Helix
尝试像这样做:YourElement1 | EmptyView | YourElement2 | ......,并将整个内容放在一个gravity="center"属性的LinearLayout中!将EmptyView的宽度设置为1dp。 - Jonsmoke
让我们在聊天中继续这个讨论 - Helix

0
最后,我保留了layout_marginLeft,但将值放在我的res/values/dimens.xml中,这样更清晰,而且我可以针对每个屏幕尺寸设置一个dimens.xml。 一个技巧是故意将textViews的宽度设置得很大,这样它就不会依赖于字符串长度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接