我有兩個並排的TextViews。假設左邊的TextView是1行,右邊的TextView是2行。有沒有辦法將左邊的TextView的基線與右邊的TextView中的最後一行對齊?如何將基線對齊到多行TextView的底線?
我打算使用任何佈局(RelativeLayout,LinearLayout等),可以實現這一點。
(的android:layout_alignBaseline
在Android的默認行爲是它對準頂行的基線。)
我有兩個並排的TextViews。假設左邊的TextView是1行,右邊的TextView是2行。有沒有辦法將左邊的TextView的基線與右邊的TextView中的最後一行對齊?如何將基線對齊到多行TextView的底線?
我打算使用任何佈局(RelativeLayout,LinearLayout等),可以實現這一點。
(的android:layout_alignBaseline
在Android的默認行爲是它對準頂行的基線。)
如果您實現自定義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);
}
}
那麼你可以使用自定義的TextView一個RelativeLayout的內部如下:
<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 2016-10-19 00:50:26
我猜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>
你已經找到了解決辦法? – Sergey 2015-08-14 14:56:46