2011-07-12 15 views
0

私はメッセージのようなUIを作成したいと思います。私は、左右の2種類の行を持つリストビューを作成しています。 各行にはTextViewが1つあります。左側のメッセージは送信者からのメッセージを表示するのに使用され、右側のメッセージは現在のユーザーからのメッセージを表示するために使用されます。
私は何をしたいのですか?TextViewを右の行に設定して、画面の特定の割合を占めるようにし、テキストを左に揃えるようにします。
ここでは、達成したいイメージを示します。http://dl.dropbox.com/u/2482095/wanted.png
青の行は「左」の行、黒の行は「右」の行です。
これを達成するために、私はLinearLayoutとRelativeLayoutのさまざまな組み合わせを使用しました。左側に空のビューを配置し、右側にtextViewを配置します。 http://dl.dropbox.com/u/2482095/notWanted1.png(テキストは常に正確な点で始まるテキスト)
私は重力を設定することもできました:右、テキストを右に整列させます。これは私のものでもありません。欲しかったアンドロイド、テキストビューを右から "成長"させる方法は?

TextViewのコンテンツを拡大する方法はありますか?あなたの空のビューに

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp"> 
     <View android:id="@+id/emptyView" 
      android:layout_width="80dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 
     <TextView android:id="@+id/messageBody" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

答えて

0

基本的には、1行に収まる場合はテキストを右揃えにし、それ以外の場合は左揃えにします。

テキストの幅を測定するには、Paint.measureText()メソッドを使用します。だから、あなたの見解のためにこれを使うかもしれません:

Paint paint = new Paint(view.getPaint()); 
LayoutParams params = view.getLayoutParams();  

int availableWidth = params.width - view.getPaddingLeft() - view.getPaddingRight(); 

int textWidth = (int) Math.ceil(paint.measureText(view.getText().toString())); 

if(textWidth <= availableWidth) { 
    view.setGravity(Gravity.RIGHT); 
} 
else { 
    view.setGravity(Gravity.LEFT); 
} 
1

あなたのTextViewの上layout_width = "wrap_content" を設定しなければならない、とlayout_weight = "1":

[編集]私のxmlファイルは次のようになります。そうすれば、TextViewは必要に応じて幅広くなり、余分なスペースは空のビューになります。

0

はい、閲覧してください(任意のビュー)wrap_content。これにより、ビューの親が許す限り拡大することができます。あなたの親があなたの視界にある程度のスペースしか許さない場合、子供は決して大きくなることはありません。そうでない場合、親は親などによっても制限されます。

+0

私は両親と成長している部分を理解しています。ラップの内容と重量のあるチップはかなり近いようです。しかし、私の右のビューは左のビューに拡大します。 – Maggie

+0

@ user485146 - ビューの右端が別のビューの左端に広がることを意味しますか? – AedonEtLIRA

+0

TextViewの左境界線は、ビューの右境界線上に展開されます。 – Maggie

関連する問題