2011-06-27 39 views
1

嘗試使兩個按鈕之間的兩個按鈕和標題之間的工具欄。當文本太長時,標題應該是ellisized,如下所示:Android中的佈局問題(兩個按鈕之間的橢圓化文本)

[Button] Some quite long header te... [Button] 

我已經嘗試了幾種解決方案,但沒有任何幫助。我最後一次嘗試是這樣的:

<TableLayout android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="#444" 
      android:stretchColumns="1"> 
    <TableRow android:background="#777" android:minHeight="60dp"> 
     <Button android:text="Left"/> 
     <TextView android:text="Center this very long text and ellisize" 
        android:background="#f00" 
        android:lines="1" 
        android:ellipsize="end" 
        android:scrollHorizontally="true" 
        android:gravity="center" 
       /> 
     <Button android:text="Right"/> 
    </TableRow> 
</TableLayout> 

但右邊的按鈕還是那張從屏幕上移開......

UPDATE: 解決的辦法是:

<RelativeLayout android:layout_width="fill_parent" android:layout_height="64dip"> 
    <Button android:id="@+id/btnLeft" 
      android:text="Left" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    <Button android:id="@+id/btnRight" 
      android:text="Right" 
      android:layout_alignParentRight="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    <TextView android:text="Center this very long text and ellisize" 
       android:layout_width="fill_parent" android:layout_height="fill_parent" 
       android:background="#f00" 
       android:lines="1" 
       android:ellipsize="end" 
       android:gravity="center" 
       android:scrollHorizontally="true" 
       android:layout_toLeftOf="@id/btnRight" 
       android:layout_toRightOf="@id/btnLeft" 
      /> 
</RelativeLayout> 

更新2:而使用TableLayout的第二種解決方案:

<TableLayout android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="#444" 
      android:stretchColumns="1" 
      android:shrinkColumns="1"> 
    <TableRow android:background="#777" android:minHeight="60dp"> 
     <Button android:text="Left"/> 
     <TextView android:text="Center this very long text and ellisize" 
        android:background="#f00" 
        android:lines="1" 
        android:ellipsize="end" 
        android:scrollHorizontally="true" 
        android:gravity="center" 
       /> 
     <Button android:text="Right"/> 
    </TableRow> 
</TableLayout> 

回答

0

嘗試使用相對佈局而不是表格佈局。如果將兩個按鈕分別設置爲左對齊和右對齊,則可以使用layout_alignRightlayout_alignLeft屬性將文本字段設置爲跨兩個按鈕。您可以查看Android開發網站上給出的RelativeLayout示例代碼。

+0

我已經使用了一些不同的屬性,但是你指出了我的正確方法。最後的工作代碼爲: ' 機器人:layout_toLeftOf = 「@ ID/btnRight」 機器人:layout_toRightOf = 「@ ID/btnLeft」 ' – ZlobnyiSerg

+0

你的表是好的,但你將需要1設置列索引的可收縮的你的XML。現在,你可以讓它伸展得儘可能多。 –

+0

太好了,謝謝你,這個方法也很完美!兩個解決方案更新了問題 – ZlobnyiSerg

0

雖然RelaviveLayout應該可以工作,但另一種選擇是將LinearLayout設置爲「水平」。將這三個小部件設置爲layout_width:「fill_parent」,並給TextView和兩個按鈕一個重量(如果您希望它們平均佔用屏幕的三個部分,則每個重量爲1)。

不在計算機上測試它,但應該在理論上工作。