将视图中心相对于其他视图水平对齐

时间:2014-12-16 14:53:33

标签: android android-layout

我有几个观点(考虑图像)。一个图像(较大的图像)应该水平居中。其他视图(较小)应该在较大视图的左侧,但它应该在较大视图左侧的空间水平居中。

一个巨大的限制:所有这些视图应该在同一个布局中(我认为相对布局更适合这种情况)。

enter image description here

但我无法实现我所需要的。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

试试这个XML ...

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <View
            android:id="@+id/smallView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

        <View
            android:id="@+id/smallView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <View
            android:id="@+id/bigView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >

        <View
            android:id="@+id/smallView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

        <View
            android:id="@+id/smallView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true" />

    </RelativeLayout>

</LinearLayout>

答案 1 :(得分:0)

似乎这样只能通过编程方式完成。

主要想法:

  • 创建FrameLayout并将所有需要的视图放入其中。
  • 计算每个视图的屏幕绝对位置(每个视图的左上角位置)。对于大视图,它将类似于:left = (screenWidth - viewWidth) / 2right = (screenHeight - viewHeight) / 2(也可能计算statusBar的高度)。
  • 通过设置FrameLayout.LayoutParams定义leftMargintopMargin - 顶部和左侧坐标,将每个视图放置在其位置。