RelativeLayout - 将项目中心相对于彼此对齐

时间:2014-01-31 22:16:53

标签: android android-layout

我想使用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>

但是,我似乎唯一的选择是alignBottomalignTopalignBaseline。显然没有达到预期的效果。

使用嵌套布局是否可以使view2的垂直中心与view1 的垂直中心匹配而不是

2 个答案:

答案 0 :(得分:1)

尝试使用android:gravity =“centerVertical”作为RelativeLayout中的属性。这应该将您的子视图居中在RelativeLayout的垂直中心。

您还可以尝试将android:layout_centerVertical =“true”作为要对齐的两个视图的属性。

但是,最好的解决方案可能是创建自定义ViewGroup。然后在自定义ViewGroup的onLayout中,将您的子视图完全按照您的规范定位。

答案 1 :(得分:0)

我做过类似的事情,其中​​最简单的“黑客”是创建一个不可见的视图,将它放在我想要的地方,然后将项目A放在这个不可见视图右侧的项目B和项目B的右侧。

我最初从Stackoverflow获得了这个想法,但没有我使用过的链接。 This讨论了同样的想法。