2011-08-30 20 views
9

カスタムAlertDialogを作成しようとしていて、レイアウトにボタンが2つあります。しかし、ボタンレイアウトが長すぎると、最初の単語だけが表示されます。私はすでに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

uをsingleline = "true"に設定すると、テキスト全体が1行に表示され、uは反対に動作します。 があなたのボタンかもしれませんtextsizeが長すぎ、ボタンの幅がテキストのサイズより小さいです。 2つのオプションがありましたが、ラップコンテンツのようにボタンの幅を広げたり、テキストのサイズを2つ小さくする必要がありました。 –

+0

しかし、テキストサイズが長すぎる場合でも、テキスト行を壊す必要があります。ボタンの幅はfill_parentです。 – rogcg

3

あなたがのための重みプロパティを使用していたので、それはおそらくです。ここ

は、それがどのように見えるかのスクリーンショットですボタン。

android:layout_weight="1" 

ボタンで体重を外し、ボタンの

android:layout_width="wrap_content" 

を設定します。私はそれがすべきだと思います。

どうすればいいのか教えてください。

+0

幅wrap_contentを設定すると、ボタンの幅は同じになります。私はそれが同じ幅を保つことを望む。このように、長いテキストのボタンを他のボタンよりも大きくし、2番目のボタンのテキストの最後の文字を隠してしまいます。私はそれが水平にするのではなく、ボタンのテキストの行を壊すことを望みます。とにかくThyx: – rogcg

+0

ボタンとその上にTextViewを含むFrameLayoutでカスタムビューを作成する必要があるでしょう。 TextViewにいくつかのパディングを提供して、ボタンの端には触れないようにします。 – Umesh

5

android:singleLine="true"は推奨されません。 代わりにこれを使用してください:

関連する問題