android:layout_alignTop 与 android:layout_alignBottom 的工作方式不同

android:layout_alignTop does not work similar to android:layout_alignBottom

我尝试在RelativeLayout中创建一个半透明的红色View和一个TextView,View的高度跟随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 的高度:

问题是什么,我该如何解决?

在视图中添加 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" />

I want to change it a bit: put the View above the TextView and others remain unchanged

如果说 above 你的意思是关于 z 轴在 TextView 之上,那么你就错了。

您可以做的,只是更改布局中视图的顺序:第一个声明的布局将首先布局,下一个将布局在它之上。

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