来自另一个视图的Android Relative Layout alignCenter

我有一个有两个孩子的相对布局,也是包含几个按钮和东西的RelativeLayouts。 这些子布局不在我的主布局中居中,主布局确实包含了这两个方面的其他一些东西。 我希望第一个在第二个之上。 这很容易,只需在第二个中使用android:layout_below="@+id/firstLayout" 。 但我也希望第二个在第一个的中心对齐。 我的意思是我想要第二个布局find第一个布局的中心,并对齐自己,使其中心位于相同的x位置。 我看到alignLeft,alignRight,alignTop和alignBaseline,但没有中心。 这是否可以不用硬编码边距来扫描第二个布局?

这是我最终想要的一个粗略的例子,蓝色条将是第一个布局,红色框将是第二个布局。 我知道我可以将它们包装在另一个大小等于“wrap_content”的相对布局中,然后使用centerHorizo​​ntal =“true”作为第二个布局。 但我真的宁愿把两个都留作我主要布局的孩子(如果我让他们成为一个单独布局的孩子,我将不得不对我的应用程序的某些部分的工作方式进行一些更改。我试图避免这种情况。)

我想要的例子

Solutions Collecting From Web of "来自另一个视图的Android Relative Layout alignCenter"

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

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

例如:

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

如果组件不是TextView (或您不需要背景的视图),则可以将其包装在具有上述属性的FrameLayout

     

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

当然,只有当您知道哪个是更大的视图时,这才有效。 如果没有,就像Laranjeiro回答的那样,将两个内容包裹在另一个具有重心的布局中。

对我有用的唯一解决方案是使用更大组件的维度将两个组件包装在FrameLayout中,并使用属性将第二个组件设置在FrameLayout的中心

     

对于文本,我一直使用这个fe进行垂直中心对齐:

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