我有两个TextViews并排。假设左侧TextView为1行,右侧TextView为2行。有没有办法将左侧TextView的基线与右侧TextView中的最后一行对齐?
我愿意使用可以实现此目的的任何布局(RelativeLayout,LinearLayout等)。
(Android中android:layout_alignBaseline
的默认行为是它对齐顶行的基线。)
答案 0 :(得分:4)
如果实现自定义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 -->
/>
答案 1 :(得分:-1)
如今,您可以使用ConstraintLayout轻松实现此目标。
答案 2 :(得分:-2)
我想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>