次のビュー構造があります。
------------------------------------
||------------||------------------||
||Text View 1 || Long Text View 3||
||------------||------------------||
||------------||------------------||
||Text 2 || View 4 ||
||------------||------------------||
------------------------------------
次の動作が必要です。
- 左の列は左揃え
- 右の列はグループとして右の境界線に揃えられますが、TextViews は左に揃えられます。
- 他の列に十分なスペースが残っている限り、列は拡張され、スペースを占有します。
- 両方の列に完全に収まる十分なスペースがない場合、水平方向のスペースは 1/2 に分割され、テキスト ビューは行を折り返します。
水平 LinearLayout にネストされた 2 つの垂直 LinearLayout を使用して、これをほぼ達成しました。しかし、#3は満足していません。左右の列の両方に weight = 1 を設定すると、スペースが増えても、最大で 50% しか占有しません。
目的のレイアウトを実現するにはどうすればよいですか?
Androidレイアウトの左端と右端でのテキストビューの整列とその他の回答を読みました。Relativelayout は機能しません。テキストがオーバーフローした場合、1 つの列が別の列と重なるだけです。または、「toTheRightOf」を指定すると、最初に列を完全に左に移動し、次に右の列に収まるように試行し、行ごとに 1 文字の垂直テキストで終了します。
私のxml:
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<LinearLayout
android:id="@+id/leftTopPanel"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="1dp"
android:gravity="left"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="very very very long text "
style="@style/InfoTextStyle.Big"
android:id="@+id/leftTopText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"
style="@style/InfoTextStyle"
android:id="@+id/leftTopText2"/>
</LinearLayout>
<LinearLayout
android:id="@+id/rightTopPanel"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:layout_weight="1"
android:gravity="right"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Also very very very long text"
style="@style/InfoTextStyle"
android:id="@+id/rightTopText"
android:layout_gravity="left"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Shorter text"
style="@style/InfoTextStyle"
android:id="@+id/rightTopText2"
android:layout_gravity="left"/>
</LinearLayout>
</LinearLayout>