Android RelativeLayout:what';基线对齐有什么问题吗?

Android RelativeLayout:what';基线对齐有什么问题吗?,android,android-layout,Android,Android Layout,我想创建一个如下所示的布局: (虚线是文本视图的基线。) 所以主锚定点是大的W,然后abc是基线与W对齐,然后def在abc之上 但是,当我为abc设置基线对齐时,def会下降并变得不可见。abc没有问题,它是完全一致的 我找到了使def可见的唯一方法:它更改abc的对齐方式,使其与W的底部对齐,但这看起来很糟糕,因为较大的图示符具有更大的底部边距(基线和视图底部边缘之间的垂直空间更大) 看起来基线对齐是以某种特殊方式处理的,因此布局无法计算从属视图的正确位置 我做错什么了吗?我的布局可能吗

我想创建一个如下所示的布局:

(虚线是文本视图的基线。)

所以主锚定点是大的W,然后abc是基线与W对齐,然后def在abc之上

但是,当我为abc设置基线对齐时,def会下降并变得不可见。abc没有问题,它是完全一致的

我找到了使def可见的唯一方法:它更改abc的对齐方式,使其与W的底部对齐,但这看起来很糟糕,因为较大的图示符具有更大的底部边距(基线和视图底部边缘之间的垂直空间更大)

看起来基线对齐是以某种特殊方式处理的,因此布局无法计算从属视图的正确位置

我做错什么了吗?我的布局可能吗

以下是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/w"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="W"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="100sp" />

    <TextView
        android:id="@+id/abc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/w"
        android:layout_alignParentLeft="true"
        android:text="abc"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/def"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/abc"
        android:layout_alignParentLeft="true"
        android:text="def"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    </RelativeLayout>

这里有一个合理但不完美的解决方法:

然而,这让我发现了一个小怪癖,如果你同时使用layout_alignBottom和layout_alignBaseline标志将B与a对齐,那么C的定位现在起作用了,它愉快地位于B上方,就好像使用了layout_alignBottom一样,尽管B仍然与a的基线对齐。需要注意的是,C的位置比正常位置稍微低一些;它的行为就像B与A的底部对齐,然后C定位,然后B重新与A的基线对齐,而C不改变位置。不过,我可以通过一些边距偏移来解决这个问题,至少可以通过XML来实现


你能发布你的布局XML吗?当然,完成了。这很简单,所以我认为我最初的解释就足够了。是的,但有时人们会犯一些他们忽略的小错误——我不是说你有…@Josepharl wise words。。。非常明智的话:)@Marckaraujo,它做了一些看起来与我需要的相似的事情,但它没有回答我关于基线对齐的问题。这是很难支持的。在我的实际应用程序中,字体大小不同,布局嵌入到另一个视图中。我不想调整像素,我希望布局管理器在基线上对齐文本。不幸的是,这似乎不起作用,至少在API 10 emulator中是这样。C不想停留在B之上。但我确认,将layout_alignBottom标志添加到B的属性会以某种方式影响C的垂直位置:如果我设置该标志,C会向上移动一点,但绝对不够。无论如何,谢谢你的发现。仅供参考,我不再遇到这个问题,因为我已经更改了布局,所以它不会以这种方式对齐视图。