6

float="right"HTMLのように、Androidでテキストレイアウトを実現しようとしています。画面の特定の領域に移動する 2 つのテキスト項目があります。そのうちの 1 つを TextView で左揃えにし、そのうちの 1 つを次のように右揃えにしたいと思います (|どちらかの端が囲んでいるコンテナを表します):-

| First text item      label |

これまでのところ、これは簡単に思えます: a に 2 つTextViewの がありRelativeLayout、右側の がlayout_alignParentRight="true"orに設定されている場合に実行できlayout_gravity="right"ます。ただし、左側のテキストが長すぎて残りのスペースに収まらない場合もあります。aを使用RelativeLayoutすると、右側のテキストに重なってしまいますが、この場合は 2 行に分けたい:-

| This text is way too long  |
|                      label |

同様に、左側のテキストが複数の行にまたがる場合、可能であれば右側のテキストを同じ行に収めたい:-

| This text doesn't fit on   |
| one line             label |

Android の s は常に長方形であるため、この最後の例を 2 つの s で動作させるには、カスタムを作成Viewしたとしても不可能のようです。a を使用してすべてのテキストを 1 つにまとめることを検討しましたが、これも aであるため、左側のテキストと同じ行にラベルを配置できるようには見えません。これを達成するために使用できる他の種類のテキストスパン、またはまったく異なる方法はありますか?TextViewLayoutSpannableTextViewAlignmentSpanParagraphStyle

現時点では、テキストを HTML に入れて を使用するかWebView(ビューはリスト アイテムに表示されるため、あまり良くありません)、カスタムのTextViewようなウィジェットを作成する必要があるようです。

4

1 に答える 1

5

android:gravity="right"(と同じではありませんlayout_gravity) を右側に追加しますが、他のテキスト ビューの id も追加しandroid:layout_alignBottomて参照します。multiline から true など、すでに持っていると思います。alignParentRightと をそれぞれ保持しalignParentLeftます。

明確にするために、それらは長方形ですが、RelativeLayout(またはFrameLayoutなど)を使用して、必要に応じて重ねることができます

別の方法として、これを試してください:右側のテキスト ビューと交換android:layout_alignBottom="@id..."します。android:layout_alignParentBottom="true"

3 番目の例と 2 番目の例を同時に動作させるには、単純な RelativeLayout を使用します。うーん...

于 2012-12-19T17:25:37.357 に答える