所以我有这个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的空间。
上面真的是它的工作方式吗?它的大小与我想要的一样,但是......不确定我理解它背后的逻辑。
答案 0 :(得分: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
,表示空间的某些部分应保留为空格并按此处理(默认情况下,出现在{{的子项之后) 1}})。