0

だから私はこのXMLコードを持っています:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linearLayoutOuter"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="3.0"
>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1.0"
>
<Gallery
 android:id="@+id/galleryMain"
 android:layout_width="match_parent"
 android:layout_height="90dp">
</Gallery>
<LinearLayout
 android:id="@+id/linearLayoutInner"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@layout/gallery_image_background"
/>
</LinearLayout>


<TextView
android:id="@+id/galleryTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2.0"
>
</TextView>

</LinearLayout>

現在、サイズは正しくなっていますが、それが正しいとは思いません。

3.0 の可能な重みのうち 1.0 を取得する LinearLayout は、約 2/3 のスペースを必要とします。3.0 の可能なワイトのうち 2.0 を取得する TextView は、約 1/3 のスペースを使用します。

上記は本当にどのように機能するのですか?サイズは思い通りですが... その背後にあるロジックがよくわかりません。

4

1 に答える 1

6

上記は本当にどのように機能するのですか?

あなたが書いた方法を考えると、はい、しかしそれが私たちが通常そのように書いていない理由です. :-)

重みと へのわかりやすいアプローチandroid:weightSumは、高さを0dpではなくに設定することmatch_parentです。次に、各子は重みに基づいて使用可能なスペースの割合を取得します。

したがって、このように 2/3 と 1/3 を分割するには、次のようになります。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linearLayoutOuter"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="3.0"
>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:layout_weight="2.0"
>
<Gallery
 android:id="@+id/galleryMain"
 android:layout_width="match_parent"
 android:layout_height="90dp">
</Gallery>
<LinearLayout
 android:id="@+id/linearLayoutInner"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@layout/gallery_image_background"
/>
</LinearLayout>


<TextView
android:id="@+id/galleryTextView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
>
</TextView>

</LinearLayout>

ご了承ください:

  • ここで整数を使用できます

  • android:weightSum重みの合計がすでにその値であるため、この場合は必要ありません。重みの合計が実際の合計よりも小さい場合に使用android:weightSumし、スペースの一部を空白として残し、そのように扱う必要があることを示します (デフォルトでは、 の子の後に表示されますLinearLayout)。

于 2013-05-05T11:52:07.673 に答える