What is the baseline in RelativeLayout?

当在相对布局的上下文中使用时,“基线”指的是什么?问题可能很简单,但文档和谷歌没有提供任何提示。

49331 次浏览

术语 基线来自排版。它是文本中看不见的行字母。

例如,假设您将两个 TextView元素放在一起。你给第二个 TextView一个很大的填充(比如说20dp)。如果将 layout_alignBaseline添加到第二个元素,则文本将“向上移动”以与第一个元素的基线对齐。来自这两个元素的文本看起来就像是写在同一条不可见的线上。

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/text1"
android:text="aatlg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:text="joof"
android:background="#00ff00"
android:padding="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/text1"
android:layout_alignBaseline="@id/text1"
/>
</RelativeLayout>

这里有一个可视化的解释,可能会澄清克里斯蒂安的答案:

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/text1"
android:text="Lorem"
android:background="@android:color/holo_blue_light"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="Ipsum"
android:background="@android:color/holo_orange_light"
android:padding="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/text1"
android:layout_alignBaseline="@id/text1" />
</RelativeLayout>

这段代码如下所示:

with android:layout_alignBaseline

现在,如果我删除 android:layout_alignBaseline属性,同样的布局看起来像这样:without android:layout_alignBaseline

观察橙色视图的高度会受到影响,这很有趣(在第一种情况下,应用于视图顶部的填充是 没有)。