用于android的LinearLayout的layout_weight不起作用

时间:2013-06-21 16:40:43

标签: android

我是Android新手,我正在使用线性布局。我想放置一个占据屏幕20%的图像。以下是代码,但这不起作用。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/sky" >

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="2" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/schoolroad" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="8" >
</RelativeLayout>

</LinearLayout>

结果是左侧布局占据了屏幕的80%。

我的代码出了什么问题?

4 个答案:

答案 0 :(得分:9)

您应指定LinearLayout

的方向

当你使用重量时,你应该将宽度(或高度)设置为与你的方向相对应的0dp。

因此,如果您的方向是垂直的,则在使用重量时应将高度设置为零。 如果它是水平的,宽度应该在使用权重时为零。

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/sky" 

    android:orientation="vertical"

    >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="2" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/schoolroad" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="8" >
    </RelativeLayout>

</LinearLayout>

答案 1 :(得分:2)

对于vertical方向,请不要忘记将height设置为0dp

android:layout_height="0dp"

对于horizontal方向,请不要忘记将width设置为0dp

android:layout_width="0dp"

答案 2 :(得分:1)

对包含android:layout_width="0dp"的子视图使用fill_parent代替layout_weight

答案 3 :(得分:0)

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/LinearLayout1"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@drawable/sky" >

    <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="2">

        <ImageView
                android:id="@+id/imageView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:src="@drawable/schoolroad" />

    </RelativeLayout>

    <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="8">
    </RelativeLayout>

</LinearLayout>