【问题标题】:How can I align an element to be in center of and above another element in relative layout?如何将一个元素对齐到相对布局中另一个元素的中心和上方?
【发布时间】:2013-08-29 10:24:58
【问题描述】:

这是一张图片,你可以理解我想要什么:

我已经在我的相对布局中设置了这个绿色元素,我想要将另一个元素(图片中的黑色元素)放在它上面,这样它就可以准确地居中在绿色元素的中间。

请记住,黑色元素的宽度不是恒定的,它比绿色元素的宽度更大。

有像 android:layout_alignLeft 和 android:layout_alignRight 这样的东西,如果我希望它左对齐或右对齐会很有帮助,但据我所知没有 android:layout_alignCenter 所以我不知道该怎么做...

【问题讨论】:

标签: android android-layout alignment android-relativelayout


【解决方案1】:

正如你自己所说,将两个元素放在 RelativeLayout 中。

然后,将两个元素的“center_horizo​​ntal”属性设置为true,然后将绿色元素的“below”属性设置为黑色元素的id .

这是完整的例子:

<?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:id="@+id/view1"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:background="@color/Black"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

    <View
        android:id="@+id/view2"
        android:layout_height="100dp"
        android:layout_below="@+id/view1"
        android:background="@color/Green"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

(“center_vertical”是可选的)

或者在这里,无论其他视图位置如何:

<?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:id="@+id/view1"
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:background="@color/Black"
        android:layout_centerVertical="true" />

    <View
        android:id="@+id/view2"
        android:layout_width="40dp"
        android:layout_height="100dp"
        android:layout_below="@+id/view1"
        android:layout_alignLeft="@+id/view1"
        android:layout_alignRight="@+id/view1"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:background="@color/Green" />

</RelativeLayout>

(在这种情况下,边距将定义第二个视图宽度)

这是最终结果:

【讨论】:

  • 问题是 center_horizo​​ntal 将元素相对于其父元素居中。而且我不希望它们位于父元素的中心,我只想将黑色元素对齐到绿色元素的中心,无论它们在父元素中的位置如何。
  • 在smthng的左右对齐一下真的很棒,谢谢
  • 没有硬编码有什么办法吗?我希望绿色与黑色居中对齐,无论它们的大小或绝对位置如何变化。
  • @Remian8985 你可以简单地将这两个元素放到一个自己的RelativeLayout中。在两个元素上使用 layout_centerHorizo​​ntal 并将第二个 RelativeLayout 放置在您想要组的任何位置。
猜你喜欢
  • 1970-01-01
  • 2012-06-26
  • 2018-05-21
  • 2017-05-13
  • 2020-06-05
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
相关资源
最近更新 更多