2011-08-30 10 views
9

Próbuję utworzyć niestandardową AlertDialog, a są dwa przyciski w układzie. Jednak gdy układ przycisków jest zbyt długi, pokazuje tylko pierwsze słowo. Już ustawiłem w xml singleLine = "false", ale nic.Tekst przycisku nie z wieloma liniami

Również mam ustawić w kodzie liczbę wierszy dla przycisku, w tym przypadku, 2. Ale gdy tekst nie jest długa, przycisk trzyma duży, nie owijając treści.

Chciałbym, aby przycisk zawinął cały tekst, nawet jeśli jest zbyt długi, przełamując linię tekstu przycisku, a jeśli lewy przycisk osiągnie większą wysokość, ponieważ owija go cały tekst, przycisk na boku ma taką samą wysokość. Wiem, że Android robi to automatycznie, ale nie wiem, dlaczego tak się nie dzieje.

Na obrazku poniżej tekstu w przycisku powinno być „Jest to przycisk test”, ale obcina tekst, a nie zawijać treści bez modyfikowania jego szerokość.

Oto zrzut ekranu jak to wygląda:

enter image description here

Oto xml z tego układu:

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

Odpowiedz

14

edit nieruchomość przycisk ..

<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

Dlaczego singleLine = "true" ?? Chcę, aby przerwał linię tekstu przycisku. – rogcg

+0

po ustawieniu singleline = "true" wyświetla cały tekst tylko w jednym wierszu, a przy ustawieniu false działa przeciwnie. może być tekstem przycisku jest za długi, a szerokość przycisku jest mała do tekstu. Była dwie opcje, które musisz zwiększyć szerokość przycisku jak zawartość wrap lub ustawić rozmiar tekstu dwa małe. –

+0

Ale nawet jeśli rozmiar tekstu jest zbyt długi, powinien przerwać linię tekstu, prawda? A przycisk ma szerokość fill_parent. – rogcg

3

Jest to prawdopodobnie dlatego, że użyłeś właściwość ciężaru dla guziki.

android:layout_weight="1" 

Zdjąć masę z przyciskami i ustawić

android:layout_width="wrap_content" 

dla przycisków. Myślę, że powinno to zrobić.

proszę powiedz mi, czy to działa.

+0

Ustawiając szerokość wrap_content, przyciski doend mają tę samą szerokość. Chcę zachować tę samą szerokość. W ten sposób powoduje, że przycisk z długim tekstem jest największy od drugiego przycisku i ukrył ostatnią literę tekstu drugiego przycisku. Chcę, aby przerwała linię tekstu przycisku, zamiast robić go w poziomie. Thx i tak. – rogcg

+0

Domyślam się, że będziesz musiał stworzyć niestandardowy widok z FrameLayout zawierający przycisk i TextView na wierzchu. Zapewnij dopełnienie widoku TextView, tak aby nie dotykał krawędzi przycisku. – Umesh

5

android:singleLine="true" jest przestarzała. Zamiast tego użyj:

android:maxLines="1" 
Powiązane problemy