layout_above坏了吗?这个简单的布局让我发疯

Is layout_above broken? this simple layout is driving me crazy

这是我的代码

<TextView
    android:id="@+id/BIG"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="BIG"
    android:textSize="50dp" />

<TextView
    android:id="@+id/small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/BIG"
    android:layout_toRightOf="@id/BIG"
    android:text="small"
    android:textSize="10dp"

    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/small"
    android:layout_alignLeft="@id/small"
    android:text="small above"
    android:textSize="10dp" />

这是我得到的结果(实际截图)。如您所见,整个文本视图已消失。

这是我想要的结果(在mspaint上编辑)

由于自动填充,我无法使用 align_bottom。这是如果我使用 align_bottom 而不是 align_Baseline 的样子(实际截图)

显然,基线对齐是在所有其他垂直对齐都已执行之后执行的。
所以“小上面”排在“小”上面的时候还在默认位置。然后,“small”与 “BIG” 的基线对齐,将“small above”留在视图之外,位于 RelativeLayout 的顶部。

此问题的一个潜在解决方案是将两个较小的 TextView 包装在一个 LinearLayout 中,然后可以将其与左侧较大的 TextView 正确基线对齐。
并且还将 android:baselineAlignedChildIndex="1" 添加到 LinearLayout,以便第二个 child 的基线与 "BIG" 对齐

参考:http://scottweber.com/2014/02/06/working-with-baselines-in-relativelayout/

试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/BIG"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="BIg"
    android:textSize="50sp"
    android:layout_gravity="bottom" />

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="bottom">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="small above"
        android:textSize="10sp" />

    <TextView
        android:id="@+id/small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="small"
        android:textSize="10sp" />


</LinearLayout>

并使用 sp 而不是 dp 作为文本大小。