Android layout_weight用于溢出线性布局高度

时间:2015-06-07 07:03:59

标签: android android-layout

我的情况是这样的: 我有一个线性布局,其中我有一个图像视图和大约10个editTexts。我希望ImageView的大小是屏幕高度的一半,剩下的编辑文本占据了剩余的空间,并在需要时滚动。

我将线性布局包裹在滚动视图中,并将权重和指定为线性布局。然后将layout_weight分配给imageView,其余部分分别为wrap_content的layout_height。但这完全隐藏了imageview。我应该如何获得我想要的那种布局?

我的layout.xml:     

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fillViewport="true"
        >
    <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
        <ImageView
                android:layout_width="fill_parent"
                android:layout_height="10dp"
                android:id="@+id/imageView" android:layout_gravity="center" android:background="#bcddff"
                />
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Launch Camera"
                android:id="@+id/button" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Enter Name"
                android:id="@+id/name" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Mobile No."
                android:id="@+id/mobile" android:layout_gravity="center" android:inputType="phone"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Whatsapp No."
                android:id="@+id/whatsapp" android:layout_gravity="center" android:inputType="phone"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Email"
                android:id="@+id/email" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Age"
                android:id="@+id/age" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Address"
                android:id="@+id/address" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="City"
                android:id="@+id/city" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="State"
                android:id="@+id/state" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Gender(M/F)"
                android:id="@+id/gender" android:layout_gravity="center"/>
        <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="Remarks"
                android:id="@+id/remarks" android:layout_gravity="center"/>
    </LinearLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:0)

当设置布局权重时,高度必须是match_parent或0dp(如果Match_parent,则布局随着权重的减小而变大,具有讽刺意味的是,如果为0dp,则布局随着权重的增加而变大)。父项在wrap_content中时,布局权重无法正常工作。

希望这有帮助,

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#bcddff" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Launch Camera" />

        <EditText
            android:id="@+id/name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Enter Name" >

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/mobile"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Mobile No."
            android:inputType="phone" />

        <EditText
            android:id="@+id/whatsapp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Whatsapp No."
            android:inputType="phone" />

        <EditText
            android:id="@+id/email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Email" />

        <EditText
            android:id="@+id/age"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Age" />

        <EditText
            android:id="@+id/address"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Address" />

        <EditText
            android:id="@+id/city"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="City" />

        <EditText
            android:id="@+id/state"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="State" />

        <EditText
            android:id="@+id/gender"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Gender(M/F)" />

        <EditText
            android:id="@+id/remarks"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Remarks" />
    </LinearLayout>

</LinearLayout>

</ScrollView>