Android:layout_alignTop не работает аналогично Android:layout_alignBottom

Я пытаюсь создать полупрозрачный красный View и TextView внутри RelativeLayout, высота которого следует за высотой TextView, он работает, как и ожидалось, когда TextView находится над полупрозрачным красным View:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
    android:background="#FF0000"
    android:alpha="0.5"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/textView"/>
<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="TEST"
    android:textSize="50dp"
    android:textColor="#000000"/>
</RelativeLayout>

но я хочу немного его изменить: поставьте View выше TextView, а остальные останутся без изменений, я попытался изменить android:layout_alignBottom в android:layout_alignTop:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
    android:background="#FF0000"
    android:alpha="0.5"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/textView"/>
<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="TEST"
    android:textSize="50dp"
    android:textColor="#000000"/>
</RelativeLayout>

но теперь View кажется, не следует за высотой TextView:

В чем проблема и как я могу это исправить?

2 ответа

Решение

Добавлять android:layout_alignBottom="@+id/textView" ввиду. например-

<View
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/textView"
        android:layout_alignBottom="@+id/textView"
        android:alpha="0.5"
        android:background="#FF0000" />

Я хочу немного его изменить: поместите View выше TextView, а остальные останутся неизменными

Если, говоря выше, вы имеете в виду на вершине TextView Что касается оси Z, то вы ошибаетесь.

Что вы можете сделать, это просто изменить порядок представлений в макете: макет, который объявлен первым, будет размещен первым, а следующий - поверх него.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TEST"
        android:textSize="50dp"
        android:textColor="#000000"/>

    <View
        android:background="#FF0000"
        android:alpha="0.5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView"/>
</RelativeLayout>
Другие вопросы по тегам