5

我有一個左對齊的TextView和右對齊的按鈕並排。我希望按鈕在右邊佔用儘可能多的空間(取決於其中的文本),左邊的文本儘可能多地填充並省略任何溢出。並排顯示Android TextView和Button,橢圓左邊TextView

|Long title that may or may not ellipsi... <Button with text>| 

我已閱讀並嘗試了很多似乎有類似問題的其他帖子,其中沒有一篇適合我。我已經嘗試使用帶權重的LinearLayout以及帶有layout_toLeftOf賦值的RelativeLayout,其中沒有一個導致我需要的。

這是我的LinearLayout代碼(帶有不必要的部分),我給了左邊的TextView layout_weight爲1,按鈕爲layout_weight爲0.這應該給右邊的按鈕所需的所有空間, TextView的其餘部分,但左側的標題停止顯示,右側的按鈕被衝到側面並切斷。我已經嘗試將文本和按鈕的寬度替換爲0dip,正如我所見,這不會改變任何內容。

<LinearLayout 
    android:layout_height="@dimen/title_bar_height" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:ellipsize="end" 
     android:layout_gravity="left|center_vertical" 
     android:gravity="left|center_vertical" 
     android:textSize="22sp" 
     android:lines="1"/> 
    <include layout="@layout/action_buttons" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0"/> 
</LinearLayout> 

更換與0的TextView的layout_weight實際上允許右側按鈕正確適合在屏幕上完全,但左文仍然沒有露面。如果我爲TextView和按鈕將layout_weights設置爲0,然後將TextView的寬度從0dip更改爲wrap_content,則會顯示所有內容,但該按鈕會被擠壓以填充剩餘空間(並且內部文本被截斷)。

這是我嘗試用的RelativeLayout:

<RelativeLayout 
    android:layout_height="@dimen/title_bar_height" 
    android:layout_width="wrap_content"> 
    <include layout="@layout/action_buttons"/> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center_vertical" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@layout/action_buttons" 
     android:gravity="center_vertical" 
     android:scaleType="center" 
     android:textSize="22sp" 
     android:ellipsize="end" 
     android:lines="1"/> 
</RelativeLayout> 

一切都對準罰款和顯示出來,除了左TextView的(當它太長)重疊,並且按鈕的頂部,而不是截斷和ellipsizing出現。不應該android:layout_toLeftOf「@ layout/action_buttons」指定TextView應該停留在按鈕的左邊界?

我已經試過看似在本網站上可以找到的與此問題有關的所有信息,但我仍然無法獲得解決方案。任何幫助將不勝感激!

+0

隨着你的' RelativeLayout'嘗試,你有沒有嘗試'android:layout_width =「wrap_content」'以防止'TextView'重疊'Button'時文本很長? – Squonk

+0

是的,對於TextView,android:layout_width =「wrap_content」和android:layout_width =「fill_parent」給出了相同的重疊問題。 – socoho

+0

我一直在eclipse佈局編輯器中嘗試了大約30分鐘,我找不到答案 - 但後來佈局並不是我最強烈的觀點。如果你還沒有在48小時內解決它,請在這裏以@MisterSquonk開頭添加評論,並且應該提醒我 - 我將在這個問題上加一個獎勵,看看它是否吸引了任何佈局大師。需要48小時纔能有資格獲得獎勵。 – Squonk

回答

17

這將這樣的伎倆爲您提供:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left|center_vertical" 
     android:layout_weight="1" 
     android:ellipsize="end" 
     android:gravity="left|center_vertical" 
     android:singleLine="true" 
     android:text="Some really long textttttttttt tooooooooooo make the ellipsize work in the preview" 
     android:textSize="22sp" /> 
    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button Text" /> 
</LinearLayout> 

這裏是它看起來運行時,如: Shorter Button

並再次用更多的文字按鈕: Longer Button

+0

非常感謝!這工作:)事實證明,導致我的問題的主要原因是從我使用的自定義按鈕。 – socoho

+2

請注意,使用此解決方案時,該按鈕始終爲右對齊...仍嘗試找到解決方案,如果文本很小,右元素向左移動以留在文本旁邊 – Thymine