如何将基线对齐到多行TextView的底部?

13

我有两个并排的TextView。假设左边的TextView只有1行,右边的TextView有2行。是否有办法将左边TextView的基线与右边TextView最后一行对齐?

我可以使用任何布局(RelativeLayout、LinearLayout等)来实现这一点。

(在Android中,android:layout_alignBaseline的默认行为是将顶部行的基线对齐。)


你找到解决方案了吗? - Sergey Ch.
2个回答

7
如果您实现一个自定义的TextView,就可以使用RelativeLayout来完成此操作。具体来说,您可以像这样覆盖 TextView.getBaseline
package mypackage.name;

// TODO: imports, etc.

public class BaselineLastLineTextView extends TextView {
    // TODO: constructors, etc.

    @Override
    public int getBaseline() {
        Layout layout = getLayout();
        if (layout == null) {
            return super.getBaseline();
        }
        int baselineOffset = super.getBaseline() - layout.getLineBaseline(0);
        return baselineOffset + layout.getLineBaseline(layout.getLineCount()-1);
    }
}

然后,您将在RelativeLayout中使用自定义TextView,如下所示:

<mypackage.name.BaselineLastLineTextView
    android:id="@+id/text_view_1"
    <!-- TODO: other TextView properties -->
/>

<TextView
    android:id="@+id/text_view_2"
    android:layout_alignBaseline="@id/text_view_1"
    <!-- TODO: other TextView properties -->
/>

创建自定义TextView确实有些繁琐,但这绝对是一个聪明的解决方案。谢谢。我还没有尝试过,但看起来应该可以工作。 - Gus

-3
我想使用RelativeLayout来实现。
<RelativeLayout..>
    <TextView android:id="@+id/tv2"
        android:layout_alignParentRight="true"
        android:maxLines="2"
        ... />
    <TextView android:id="@+id/tv1"
        android:layout_toLeftOf="@id/tv2"
        android:layout_alignBottom="@id/tv2"
        android:maxLines="1"
        ... />
</RelativeLayout>  

3
这是底部对齐,而不是基线对齐。 - Gus
使用 android:layout_alignBaseline - An SO User
4
alignBaseline 对齐的是第一行,而不是底部。 - theV0ID

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接