2011-08-30 71 views
9

我試圖創建一個自定義AlertDialog,並且在佈局中有兩個按鈕。但是,如果按鈕佈局太長,它只會顯示第一個單詞。我已經在xml singleLine = "false"中設置,但沒有。沒有多行的按鈕文本

此外,我已經在代碼中設置了按鈕的行數,在這種情況下,2.但是,當文本不長,按鈕保持大,不包裝內容。

我想要做的是讓按鈕包裹整個文本,即使通過打破按鈕的文本行太長,並且如果左邊的按鈕由於它包裹整個文本而獲得更大的高度文本,其側面的按鈕應該是相同的高度。我知道Android會自動執行此操作,但我不知道爲什麼它不會發生。

在下面的圖片中,按鈕中的文本應該是「這是一個測試按鈕」,但它會剪切文本,並且不會在不修改其寬度的情況下包裝內容。

這裏是它的外觀像一個截圖:

enter image description here

下面是這個佈局的XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:minWidth="280dip" > 

    <LinearLayout 
     android:id="@+id/dialogTitleLayout" 
     android:orientation="vertical" 
     android:background="@drawable/header" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <TextView 
      style="@style/DialogText.Title" 
      android:id="@+id/dialogTitle" 
      android:paddingBottom="5dp" 
      android:paddingTop="5dp" 
      android:paddingLeft="8dip" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

    </LinearLayout> 

    <LinearLayout  
     android:id="@+id/dialogContentLayout" 
     android:orientation="vertical" 
     android:background="@drawable/center" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <TextView 
      style="@style/DialogText" 
      android:id="@+id/dialogContent" 
      android:layout_width="270dip" 
      android:layout_height="wrap_content" 
      android:paddingLeft="10dp" 
      android:paddingTop="10dp" /> 

<LinearLayout 
     android:id="@+id/buttonsLayout" 
     android:orientation="horizontal" 
     android:gravity="center_horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:paddingTop="10dp" >  
     <Button 
      android:id="@+id/neutralButton" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:background="@drawable/button" 
      android:textColor="#FFFFFF"   
      android:paddingTop="8dp" 
      android:paddingBottom="8dp"    
      android:layout_gravity="center_horizontal" 
      android:layout_marginRight="90dp" 
      android:layout_marginLeft="90dp" 
      android:layout_marginBottom="10dp" 
      android:singleLine="false" />  
     <Button 
      android:id="@+id/positiveButton" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/button" 
      android:textColor="#FFFFFF"    
      android:paddingTop="8dp" 
      android:paddingBottom="8dp" 
      android:paddingLeft="10dp" 
      android:layout_weight="1" 
      android:paddingRight="10dp" 
      android:layout_margin="10dp" 
      android:singleLine="false" />  
     <Button 
      android:id="@+id/negativeButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/button" 
     android:textColor="#FFFFFF"    
     android:paddingTop="8dp" 
     android:paddingBottom="8dp" 
     android:paddingLeft="10dp" 
     android:layout_weight="1" 
     android:paddingRight="10dp" 
     android:layout_margin="10dp" 
     android:singleLine="false" />  
    </LinearLayout> 
</LinearLayout> 
</LinearLayout> 

回答

14

編輯您的按鈕屬性..

<Button 
     android:id="@+id/neutralButton" 
     android:layout_width="wrap_content" 
     android:background="@drawable/button" 
     android:textColor="#FFFFFF"   
     android:textSize="10dp"     
     android:layout_gravity="center_horizontal" 
     android:singleLine="true" /> 
+0

爲什麼singleLine =「true」?我想讓它打破按鈕的文本行。 – rogcg

+0

當你設置singleline =「true」時,它僅在單行顯示整個文本,而你設置爲false它的作用與之相反。 可能是您的按鈕文本太長,按鈕寬度對文本而言很小。 有兩個選項需要增加你的按鈕寬度像包裝內容或設置文本大小兩個小。 –

+0

但是,即使文本大小太長,也應該打破文本行,對嗎?該按鈕的寬度爲fill_parent。 – rogcg

3

這可能是因爲你已經使用了重量屬性爲鈕釦。

android:layout_weight="1" 

在按鈕刪除的重量,並設置

android:layout_width="wrap_content" 

的按鈕。我認爲應該這樣做。

請告訴我它是否有效。

+0

通過設置寬度wrap_content,按鈕可以具有相同的寬度。我希望它保持相同的寬度。像這樣,它使長按鈕的文本最大,然後另一個按鈕,並隱藏了第二個按鈕文本的最後一個字母。我想讓它打破按鈕文本的行,而不是橫向。無論如何,這個Thx是 。 – rogcg

+0

我想你必須創建一個帶有FrameLayout的自定義View,它包含一個按鈕和一個TextView。爲TextView提供一些填充,使其不會觸及按鈕的邊緣。 – Umesh

5

android:singleLine="true"已被棄用。 改爲使用此代碼:

android:maxLines="1"