Foa*_*Guy 26 android alignment android-relativelayout
我有一个RelativeLayout有两个孩子,也RelativeLayout包含几个按钮和东西.这些子布局不是在我的主布局中居中,主布局确实包含了这两个方面的一些其他东西.我希望第一个在第二个之上.这很容易,只需android:layout_below="@+id/firstLayout"在第二个使用.但我也希望第二个在第一个的中心对齐.我的意思是我想要第二个布局找到第一个布局的中心,并对齐自己,使其中心位于相同的x位置.我明白了alignLeft, alignRight, alignTop, and alignBaseline,但没有中心.是否可以这样做而不必硬编码边距来扫描第二个布局?
这是我想要最终得到的一个粗略的例子,蓝色条将是第一个布局,红色框将是第二个布局.我知道我可以将它们包装在另一个RelativeLayout大小相等的区域中"wrap_content",然后centerHorizontal="true"用于第二个区域.但我真的宁愿把两个都留作我的主要布局的孩子(如果我让他们成为一个单独布局的孩子,我将不得不对我的应用程序的某些部分的工作方式进行一些更改.我试图避免这种情况.)

如果您可以将父布局的宽度设置为"wrap_content",则可以将两个子布局设置为居中
有时您可以将alignLeft和设置alignRight为所需的视图,然后在您想要居中的元素上使用重力。
例如:
android:layout_below="@+id/firstLayout"
android:layout_alignLeft="@+id/firstLayout"
android:layout_aligntRight="@+id/firstLayout"
android:gravity="center"
Run Code Online (Sandbox Code Playgroud)
如果组件不是 a TextView(或不需要背景的视图),则可以将其包装在FrameLayout具有上述属性的 a 中。
<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>
Run Code Online (Sandbox Code Playgroud)
这样,底部视图将是一个与上部视图宽度相同的 Frame,但在其内部将有一个以宽度为中心的视图。
当然,这仅在您知道哪个是更大的视图时才有效。如果不是,正如 Laranjeiro 所回答的那样,将两个内容包装在另一个具有中心重力的布局中。
| 归档时间: |
|
| 查看次数: |
18007 次 |
| 最近记录: |