繁体   English   中英

RelativeLayout,如何对齐其他视图的中心?

[英]RelativeLayout, how to align center of other view?

我创建了这些视图

<View
    android:id="@+id/a"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:background="@color/opaque_red" />
<View
    android:id="@+id/b"
    android:layout_width="20dp"
    android:layout_height="20dp"
    android:layout_alignBottom="@id/a"
    android:layout_toRightOf="@id/a"
    android:background="@color/opaque_red" />
<View
    android:id="@+id/c"
    android:layout_width="20dp"
    android:layout_height="20dp"
    android:layout_alignBottom="@id/a"
    android:layout_toLeftOf="@id/a"
    android:background="@color/opaque_red" />

我该如何与此对齐?

在此输入图像描述

我不能使用另一布局包这三个视图,因为我将使用OnTouchListener移动a视图,位置计算将基于a 如果包装在其他布局中,计算非常困难。

将b和c对齐到a的底部或顶部,然后分别在b和c的底部或顶部添加15dp马林。 因为您的视图具有硬编码大小,所以这是有效的。

基本上

margin = ((a.height - b.height) / 2)

另一种方法是必须在相对布局中将它们包含在wrap_content或a的高度中,并将b和c与垂直中心对齐,但是你说你不想要它。

将父布局的高度设置为wrap_content,然后将子项放到中心:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <View
        android:id="@+id/a"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerInParent="true"
        android:background="@android:color/holo_green_light" />
    <View
        android:id="@+id/b"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/a"
        android:background="@android:color/darker_gray" />
    <View
        android:id="@+id/c"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/a"
        android:background="@android:color/darker_gray" />

</RelativeLayout>

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM