我想使用RelativeLayout
在彼此旁边对齐两个项目,其中两个项目的垂直中心相等。
例如,如果我想要这个布局:
****
**** *******
****
************
我会建立像:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/view1"
android:layout_width="100dp"
android:layout_height="100dp"/>
<View
android:id="@+id/view2"
android:layout_width="match_parent"
android:layout_height="20dp"
android:toRightOf="@id/view1"/>
<View
android:id="@+id/view3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/view1"/>
</RelativeLayout>
但是,我似乎唯一的选择是alignBottom
,alignTop
和alignBaseline
。显然没有达到预期的效果。
使用嵌套布局是否可以使view2
的垂直中心与view1
的垂直中心匹配而不是?
答案 0 :(得分:1)
尝试使用android:gravity =“centerVertical”作为RelativeLayout中的属性。这应该将您的子视图居中在RelativeLayout的垂直中心。
您还可以尝试将android:layout_centerVertical =“true”作为要对齐的两个视图的属性。
但是,最好的解决方案可能是创建自定义ViewGroup。然后在自定义ViewGroup的onLayout中,将您的子视图完全按照您的规范定位。
答案 1 :(得分:0)
我做过类似的事情,其中最简单的“黑客”是创建一个不可见的视图,将它放在我想要的地方,然后将项目A放在这个不可见视图右侧的项目B和项目B的右侧。
我最初从Stackoverflow获得了这个想法,但没有我使用过的链接。 This讨论了同样的想法。