我有两个并排的TextView。假设左边的TextView只有1行,右边的TextView有2行。是否有办法将左边TextView的基线与右边TextView最后一行对齐?
我可以使用任何布局(RelativeLayout、LinearLayout等)来实现这一点。
(在Android中,android:layout_alignBaseline
的默认行为是将顶部行的基线对齐。)
我有两个并排的TextView。假设左边的TextView只有1行,右边的TextView有2行。是否有办法将左边TextView的基线与右边TextView最后一行对齐?
我可以使用任何布局(RelativeLayout、LinearLayout等)来实现这一点。
(在Android中,android:layout_alignBaseline
的默认行为是将顶部行的基线对齐。)
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 -->
/>
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>
android:layout_alignBaseline
。 - An SO UseralignBaseline
对齐的是第一行,而不是底部。 - theV0ID