如何将Baseline与多行TextView的底线对齐?

Gus*_*Gus 11 android android-layout

我有两个TextViews并排.假设左侧TextView为1行,右侧TextView为2行.有没有办法将左侧TextView 的基线与右侧TextView中的最后一行对齐?

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

(android:layout_alignBaselineAndroid中的默认行为是它对齐顶行的基线.)

psc*_*eri 6

如果您实现自定义 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您将在 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 -->
/>
Run Code Online (Sandbox Code Playgroud)