2011-08-30 47 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"