android:layout_weight考虑FrameLayout中嵌入的ImageViewer的大小

时间:2011-11-19 08:47:17

标签: java android android-layout

所以我的main.xml看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" 
android:weightSum="1">


<FrameLayout
    android:id="@+id/headerFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.15"
    android:background="#597eAA">

    <ImageView
        android:id="@+id/logoImage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#7ba1d1"
        android:src="@drawable/logo_conekta"/>

</FrameLayout>

<LinearLayout
    android:id="@+id/bodyLinearLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.7"
    android:background="#f3f3f3"
    android:orientation="horizontal" >

</LinearLayout>

<FrameLayout
    android:id="@+id/footerFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.15"
    android:background="#597eAA" >
</FrameLayout>

我想要完成的是将屏幕拆分为三个:高度相等的页眉和页脚以及其余部分的主体。

当我运行此代码时,headerFrameLayout最终会成为footerFrameLayout的大小+ logoImage的高度。例如:headerFrameLayout = 163,logoImage = 58,footerFrameLayout = 105,bodyLinearLayout = 493。

我不明白为什么标题也会考虑照片的大小。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这并不明显,但这就是它的工作原理。如果您希望15%,70%,15%的分布设置为每个元素的高度为0dp而不是wrap_content

答案 1 :(得分:1)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical" 
android:weightSum="1">


<FrameLayout
    android:id="@+id/headerFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:background="#597eAA">

    <ImageView
        android:id="@+id/logoImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#7ba1d1"
        android:src="@drawable/logo_conekta"/>

</FrameLayout>

<LinearLayout
    android:id="@+id/bodyLinearLayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.7"
    android:background="#f3f3f3"
    android:orientation="horizontal" >

</LinearLayout>

<FrameLayout
    android:id="@+id/footerFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="0.15"
    android:background="#597eAA" >
</FrameLayout>
</LinearLayout>