5

ListViewには、1行に2つのTextViewsがあります。 1つは左に、もう1つは右に配置します。両方ともTextViewsは、テキストを内側に囲むだけの丸みのある矩形を背景にしています。だから私はこの思い付いた:ListViewに2つのTextViewを整列させ、背景を伸ばさずに

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/text_right" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/bubble_purple" 
     android:gravity="center" > 
    </TextView> 

    <TextView 
     android:id="@+id/text_left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@id/text_right" 
     android:background="@drawable/bubble_blue" 
     android:gravity="center" > 
    </TextView> 
</RelativeLayout> 

それは長いテキストのよさそうではなく、短いメッセージのために:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/text_left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:background="@drawable/bubble_blue" 
     android:gravity="center" > 
    </TextView> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/text_right" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0" 
     android:background="@drawable/bubble_purple" 
     android:gravity="center"> 
    </TextView> 
</LinearLayout> 

:私もこのようなのLinearLayoutを試してみました

enter image description here

これは短いメッセージでは機能しますが、短いメッセージでは機能しません:

enter image description here

TextViewsの幅の合計を測定し、これらのレイアウトをプログラムによって切り替えることはできますか、ここで何か間違っていますか?

+1

いくつかのレイアウト上の重量 –

+0

てみアンドロイド入れ:両方 – Android2390

+0

ためlayout_weight =「1」を最初の1が小さい場合にはどのように2 'TextViews'はストレッチべきで、 2番目のものは大きいですか? – Luksprog

答えて

6

希望どおりに機能しますか? layout_weightパラメータを追加し、それらを同じにすることにより

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<TextView 
    android:id="@+id/text_right" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.5" 
    android:background="@drawable/bubble_blue" 
    android:text="2" 
    android:gravity="center" > 
</TextView> 

<TextView 
    android:id="@+id/text_left" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.5" 
    android:background="@drawable/bubble_purple" 
    android:text="9" 
    android:gravity="center" > 
</TextView> 
</LinearLayout> 

、あなたは同様に二つのビュー間のいずれかの予備の部屋を割り当てるためにレイアウトエンジンを教えてください。左のブロックを右よりも大きくしたい場合は、より大きな重みを与えることができます。

編集:多分これが優れている:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<LinearLayout 
    android:id="@+id/text_left" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.5" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#456" 
     android:text="5 + 1" 
     android:gravity="center" > 
    </TextView> 

</LinearLayout> 

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text=" = " > 
</TextView> 

<LinearLayout 
    android:id="@+id/text_right" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layoutDirection="rtl" 
    android:layout_weight="0.5"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="#856" 
      android:text="6" 
      android:gravity="center" > 
     </TextView> 

</LinearLayout> 

</LinearLayout> 
+0

いいえ、正確ではありません。確かにこれは長いテキストでは機能しますが、短いテキストではこれが背景を広げます(http://img225.imageshack.us/img225/8269/linearstretchedbg.png)。理想的には、バックグラウンドはテキストを折り返すだけで、上の2番目の画像のように短いメッセージのために泡の間にスペースがあるはずです。 – wollan

+0

ニース! 'ViewGroups'でそれらをラップすると、それは決して考えられませんでした。しかし、私は 'android:layoutDirection'のために" No resource identifier found "を取得しました。しかし、2番目の内部のLinearLayoutを 'FrameLayout'に切り替え、' android:layout_gravity = "right" 'を追加することはやりました。どうも! – wollan

関連する問題