2014-10-10 313 views
11

我有兩個並排的TextViews。假設左邊的TextView是1行,右邊的TextView是2行。有沒有辦法將左邊的TextView的基線與右邊的TextView中的最後一行對齊?如何將基線對齊到多行TextView的底線?

我打算使用任何佈局(RelativeLayout,LinearLayout等),可以實現這一點。

(的android:layout_alignBaseline在Android的默認行爲是它對準頂行的基線。)

+0

你已經找到了解決辦法? – Sergey 2015-08-14 14:56:46

回答

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); 
    } 
} 

那麼你可以使用自定義的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 --> 
/> 
+0

創建自定義TextView非常麻煩,但這絕對是一個明智的解決方案。謝謝。我沒有嘗試過,但似乎它會工作。 – Gus 2016-10-19 00:50:26

-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> 
+3

這是對齊底部,而不是基線。 – Gus 2014-10-11 01:27:04

+0

使用'android:layout_alignBaseline' – 2014-10-11 19:25:56

+4

@LittleChild'alignBaseline'對齊第一行,而不是底線。 – theV0ID 2014-10-15 19:29:45