Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 相对视图,如何对齐其他视图的中心?_Android_Android Layout_Android Relativelayout - Fatal编程技术网

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

Android 相对视图,如何对齐其他视图的中心?,android,android-layout,android-relativelayout,Android,Android Layout,Android Relativelayout,我创建了这些视图 <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="20

我创建了这些视图

<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的底部或顶部,然后分别将15dp marin添加到b和c的底部或顶部。因为您的视图具有硬编码的大小,所以这是可行的

基本上

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

另一种方法是将它们包含在一个相对布局集中,以包裹内容或a的高度,并将b和c与垂直中心对齐,但您说您不希望这样做。

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

基本上

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

另一种方法是将它们包含在相对布局集中,以包裹内容或a的高度,并将b和c与垂直中心对齐,但您说您不希望这样做。

将父布局的高度设置为包裹内容,然后将子布局放在中心:

<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>


将父版面的高度设置为包裹内容,然后将子版面放在中间:

<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>


实际上,这是三个不带大小的内容图像视图,我只是对问题的大小进行了硬编码,不管大小,该算法适用。不管怎样,如果你把它们包装在一个布局中,会更容易。实际上,这是三个没有大小的包装内容图像视图,我只是硬编码了问题的大小,不管大小,算法都适用。不管怎样,如果你把它们包装在一个布局中,这会使它更容易。