2017-03-28 8 views
0

私は3人の子供がいる直線レイアウトを持っています。3人の子供がいるAndroidのlinearLayout。そのうちの2つは等しい幅です

2つは同じ幅でなければなりません。真ん中にいる子供の一人が成長しなければなりません。そして、2つの等しい幅の子供は、残りのスペースを分割する必要があります。

|<-- equal width --> <-- a gorwing child --> <-- euqal width -->| 

どのようにして、このような配列を直線レイアウトで作成できますか?

おかげ

+0

LinearLayoutを使用すると、期待どおりの結果を得ることができません。 LinearLayoutの代わりにRelativeLayoutを使用します。私の答えは下記をご覧ください。 – FAT

+0

このソリューションで私の答えをチェックすると、linearLayoutのような別のLayout.ViewGroupを使う必要はありません。そのため、メモリ使用効率が向上します。 –

答えて

3

これを試してみてください:

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

    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Left" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Middle Button Long Text " /> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Right" /> 
</LinearLayout> 

は真ん中のボタンの幅を作る android:layout_width="wrap_content"

オプション2

私は...それを使用する代わりに、相対的なレイアウトを使用することをお勧めします。 android:layout_alignParentLeft="true"android:layout_alignParentRight="true"の助けを借りて、あなたは、レイアウトに

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

    <Button 
     android:id="@+id/bt_left" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:minWidth="0dp" 
     android:text="Left" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/bt_right" 
     android:layout_toRightOf="@+id/bt_left" 
     android:text="Middle Button Long Text Middle Button Long Text Middle Button Long Text Middle Button Long Text" /> 

    <Button 
     android:id="@+id/bt_right" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:minWidth="0dp" 
     android:text="Right" /> 
</RelativeLayout> 

出力を達成することができます

enter image description here

+0

これは当てはまりません。この値を設定すると、中間のテキストが増加すると、それは他の2つのテキストビューと重なります。ここで中間テキストの重さは意味がありません0.1重量で同じ結果を生成するでしょう – Manmohan

+0

私は非常に答えのURのバージョンを見て欲しいです!@Manmohan – rafsanahmad007

+0

私は私がbetterrrをすることができることを望む! – rafsanahmad007

0

この

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight=".5" 
    android:text="Button 1" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="Button 2" /> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight=".5" 
    android:text="Button 3" /> 

</LinearLayout> 
-1

は変化幅と高さあなたが

<Button 
    android:id="@+id/xxx" 
    android:layout_width="120dp" 
    android:layout_height="35dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:background="@drawable/draw"/> 
<Button 
    android:id="@+id/yyy" 
    android:layout_width="120dp" 
    android:layout_height="35dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/draw"/> 
<Button 
    android:id="@+id/zzz" 
    android:layout_width="match_parent" 
    android:layout_height="35dp" 
    android:layout_alignParentBottom="true" 
    android:layout_toRightOf="@id/xxx" 
    android:layout_toLeftOf="@id/yyy" 
    android:background="@drawable/draw_draw"/> 

を好むものにしたいが、どこにこれらを入れて試してみて、実際にそれがのLinearLayoutまたはRelativeLayoutが、必要ありません。どのグループビューでもそれらを子にすることができますが、私の提案はメモリ使用に対してより効率的であるため、これをしないことをお勧めします。

0

LinearLayoutを使用することによって、あなたはいつものようにあなたの期待された結果を取得することができなくなります。 LinearLayoutの代わりにRelativeLayoutを使用してください。

完全に動作するコードです。

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

    <Button 
     android:id="@+id/button_middle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:maxLines="1" 
     android:text="MIDDLE GROWING" /> 

    <Button 
     android:id="@+id/button_left" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/button_middle" 
     android:maxLines="1" 
     android:text="EQUAL" /> 

    <Button 
     android:id="@+id/button_right" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/button_middle" 
     android:maxLines="1" 
     android:text="EQUAL WIDTH" /> 
</RelativeLayout> 

予想される出力::このお試しくださいFYI

enter image description here

を、私はそのは完全に働いていることを理解させるために3レイアウトを使用していました。

関連する問題