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

标签 android android-layout

我有两个并排的 TextView。假设左边的 TextView 是 1 行,右边的 TextView 是 2 行。有什么方法可以使左侧 TextView 的基线与右侧 TextView 的最后一行对齐?

我愿意使用任何可以实现此目的的布局(RelativeLayout、LinearLayout 等)。

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

最佳答案

如果您实现自定义 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 -->
/>

关于android - 如何将基线对齐到多行 TextView 的底线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26306667/

相关文章:

java - 如何在Android中将菜单设置为工具栏

android - 没有 child 时隐藏可扩展列表的可绘制对象

java - 如何缩小 Java ObjectOutputStream

android - 在 Android 中使用另一组资源(不是运行时,而是编译时)

java - 安卓工作室 : java. lang.OutOfMemoryError

java - Jetpack 数据绑定(bind)在同一文件中生成了与同一类相同的重复类

android - 在一个垂直边上倾斜图像

Android查看背景: How to specify background color for PNG transparency?

android - Android Bottom Sheet 上的静态页脚 View

java - 如何从 fragment 中的另一个布局访问按钮