Android相对布局alignCenter从另一个视图

我有一个有两个孩子的相对布局,这两个孩子都是包含几个button和事物的RelativeLayouts。 这些孩子们的布局并不是以我的主布局为中心,主布局确实包含了这两个方面的其他内容。 我想要第一个在第二个之上。 这很简单,只需在第二个中使用android:layout_below="@+id/firstLayout" 。 但是我也希望第二个在第一个的中心alignment。 我的意思是我想要第二个布局find第一个布局的中心,并调整自己,使其中心位于同一个x位置。 我看到alignLeft,alignRight,alignTop和alignBaseline,但没有中心。 这是否可以做,而不必硬编码的边缘,以超过一些scoot第二个布局?

这里是我试图结束的一个粗略的例子,蓝色的酒吧将是第一个布局,红色的方块将是第二个布局。 我知道我可以把它们都换成另一个大小与“wrap_content”相等的相对布局,然后使用centerHorizo​​ntal =“true”作为第二个。 但是我真的宁愿把这两个孩子都留在我的主要布局中(如果我让他们成为一个单独的布局的孩子,我将不得不改变我的应用程序的某些部分的工作方式)。

我想要的例子

Solutions Collecting From Web of "Android相对布局alignCenter从另一个视图"

如果可以将父布局的宽度设置为“wrap_content”,则可以将两个子布局居中

对我来说,唯一的解决scheme是将两个组件都包装在一个FrameLayout中,使用更大的组件的尺寸,并使用属性将第二个组件设置在FrameLayout的中心

 <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/red_component" android:layout_width="100dp" android:layout_height="100dp"/> <View android:id="@+id/blue_component" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center" /> </FrameLayout> 

有时您可以将alignLeftalignRight设置为所需的视图,然后对要居中的元素使用重力。

例如:

 android:layout_below="@+id/firstLayout" android:layout_alignLeft="@+id/firstLayout" android:layout_aligntRight="@+id/firstLayout" android:gravity="center" 

如果组件不是一个TextView (或者你不需要背景的视图),那么你可以用上面的属性把它包装在一个FrameLayout

 <MyView id="@+id/firstLayout" .. other props/> <FrameLayout ... other props android:layout_below="@+id/firstLayout" android:layout_alignLeft="@+id/firstLayout" android:layout_aligntRight="@+id/firstLayout" android:gravity="center" > <MyView id="@+id/myAlignedView" ..other props /> </FrameLayout> 

这样,底部视图将是一个与上部宽度相同的框架,但是在其内部会有一个以宽度为中心的视图。

当然,这只有当你知道哪一个是较大的观点时才有效。 如果没有,就像拉兰吉罗(Laranjeiro)回答的那样,把这两个内容都用另一种布局重心来包装。

对于文本,我一直在使用这个fe的垂直中心alignment:

 android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_alignTop="@id/theBigOne" android:layout_alignBottom="@id/theBigOne" android:layout_toRightOf="@id/theBigOne" 

就像这样设置:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/bottomHolder" android:layout_alignParentTop="true" android:layout_centerInParent = "true"/> <View android:id="@+id/bottomHolder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true"/> </RelativeLayout>