Как я могу выровнять элемент в центре и над другим элементом в относительной компоновке?

Вот картина, чтобы вы могли понять, чего я хочу:

enter image description here

У меня есть этот зеленый элемент, который уже настроен в моей относительной компоновке, и я хочу, чтобы над ним появился еще один элемент (черный на рис.), Чтобы он центрировался точно в середине зеленого элемента.

Имейте в виду, что черный элемент не имеет постоянной ширины и больше ширины, чем зеленый.

Есть такие вещи, как android: layout_alignLeft и android: layout_alignRight, которые были бы полезны, если бы я хотел, чтобы он выравнивался влево или вправо, но насколько я знаю, нет андроида: layout_alignCenter, поэтому я не знаю, как это сделать...

Ответ 1

Как вы сами сказали, поместите оба элемента внутри RelativeLayout.

Затем установите для свойства " center_horizontal " оба элемента значение true, а затем установите для свойства " ниже " зеленого элемента значение 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>

(В этом случае поля будут определять вторую ширину просмотров)

Это конечный результат:

enter image description here