2012-04-22 21 views
4

私は、水平のLinearLayoutに2つの他の2つがある複雑なレイアウト状況があります。LinearLayoutです。これらのレイアウトのコンテンツは動的であり、任意の種類のビューにすることができ、異なる独立したソースから実行時に生成されます。LinearLayout space distribution

十分なスペースがある限り、両方を表示したい場合は、空き容量の50%に制限します。だから私はそれらの子供LinearLayoutは、十分なスペースがある場合はlayout_width="wrap_content"、そうでない場合はlayout_weight="0.5"を持つようにします。これは、空間分布が10-90,25-75,60-40である可能性があることを意味する。両方のビューの内容全体を表示するのに十分なスペースがない場合は、50〜50にすぎません。これまでXMLからこれを行う方法は見つかっていないので、コードからやっています。私の質問は、私はXML属性だけを使って何をしたいのですか?別の種類のレイアウトでそれを行うことはできますか?

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

    <LinearLayout 
     android:id="@+id/title_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp"/> 

    <LinearLayout 
     android:id="@+id/options_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp"/> 

</LinearLayout> 
+0

xmlファイルを追加できます –

答えて

1

XML属性のみを使用してこれを行うことはできないようです。

+0

これで何が達成できますか? :)これをコード化する方法を知っていますか? – Zordid

0

変更layout_width = "wrap_content" あなたは体重の概念を使用しているとして= "fill_parent" をlayout_widthする:

は、ここに私の現在のレイアウトXMLです。

+0

'layout_weight'は、' LinearLayout'の余分なスペースのどれが関連するビューに割り当てられるかを示します。 'layout_width =" fill_parent "を設定する場合は、割り振る余分なスペースはありません。 –

+0

私によれば、私たちはそれを親に記入して、少なくともあなたの場合は体重を割り当てる必要があります。一度試して問題を解決できるかもしれませんか? –

+0

試しましたか? –

2

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

    <LinearLayout 
     android:id="@+id/title_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" android:layout_weight="1"> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/options_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" android:layout_weight="1"> 

    </LinearLayout> 

</LinearLayout> 

私はtextviewsで試しましたが、これは要件に従って動作するはずです。

+0

これはトリックを行うようだ!しかし、どのように機能するのですか? 「マイナスの」余分なスペースは、子供に同じように割り当てられていますか? –

+0

重みは私が把握しようとしているトリッキーな概念です。この場合、両方のレイアウトに等しい重みが与えられ、同時にそれらもwrap_contentになります。 1つのアイテムにアイテムがなく、別のアイテムに多数のアイテムがある場合、wrap_contentは空のレイアウトをラップしようとし、何もせずに終了します。それをfill_parentにした場合、2つのレイアウトは、1つのレイアウトが空であっても等しいスペースを取ることになります。これは実験に基づいた私の理解です。私は時間があれば実装をチェックアウトする予定です:) – Shubhayu

+0

残念ながら、これは必要に応じて正確には機能しません。両方の子の幅の合計が使用可能なスペースよりも大きく、一方がかなり大きい場合、短いものはそのサイズが使用可能なスペースの半分よりも小さくなっても完全には表示されません。 –