2011-08-30 23 views
9

Estoy tratando de crear un AlertDialog personalizado, y hay dos botones en el diseño. Sin embargo, cuando el diseño de los botones es demasiado largo, solo muestra la primera palabra. Ya configuré el xml singleLine = "false", pero nada.Texto del botón no con varias líneas

También he establecido en el código el número de líneas para el botón, en este caso, 2. Pero cuando el texto no es largo, el botón se mantiene grande, sin ajustar el contenido.

Lo que me gustaría hacer es hacer que el botón cubra todo el texto, incluso si es demasiado largo rompiendo la línea de texto del botón, y si el botón izquierdo gana una altura mayor porque está envolviendo todo texto, el botón en su lado debe tener la misma altura. Sé que Android lo hace automáticamente, pero no sé por qué no está sucediendo.

En la imagen siguiente, el texto en el botón debe ser "Este es un botón de prueba", pero corta el texto y no ajusta el contenido sin modificar su ancho.

Aquí está una captura de pantalla de cómo se ve:

enter image description here

Aquí es el xml de esta disposición:

<?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> 

Respuesta

14

editar su propiedad botón ..

<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

¿Por qué singleLine = "true"? Quiero que rompa la línea de texto del botón. – rogcg

+0

cuando configura singleline = "true", muestra texto completo en una sola línea y establece falso, funciona al revés. puede ser su botón textize es demasiado largo y el ancho del botón es pequeño para el texto. había dos opciones que necesita para aumentar el ancho de su botón como contenido envolvente o establecer tamaño de texto dos pequeño. –

+0

Pero, incluso si el tamaño del texto es demasiado largo, debería romper la línea de texto, ¿verdad? Y el botón tiene un ancho fill_parent. – rogcg

3

Es probablemente debido a que usted ha utilizado la propiedad de peso para la botones.

android:layout_weight="1" 

Retire el peso de los botones y ajuste

android:layout_width="wrap_content" 

para los botones. Creo que debería hacerlo.

por favor dígame si funciona.

+0

Al configurar el ancho wrap_content, los botones doenst tienen el mismo ancho. Quiero que mantenga el mismo ancho. De esta manera, hace que el botón con el texto largo sea más grande que el otro y oculta la última letra del texto del segundo botón. Quiero que rompa la línea del texto del botón, en lugar de hacerlo en horizontal. Thx de todos modos. – rogcg

+0

Supongo que tendrá que crear una vista personalizada con un FrameLayout que contenga un botón y una vista de texto en la parte superior. Proporcione algo de relleno al TextView para que no toque el borde del botón. – Umesh

5

android:singleLine="true" está en desuso. Use esto en su lugar:

android:maxLines="1" 
Cuestiones relacionadas