Android layout_weight不能正常工作

时间:2014-08-19 16:22:01

标签: java android xml layout

我正在尝试将我的ImageView和LinearLayout设置为每个屏幕的一半。这在平板电脑上运行良好,但在较小的屏幕上,图像占据了整个屏幕(因此,实际上并没有工作)。

我看到它的方式是,我在ImageView和LinearLayout上都设置了layout_weight =“1”,并且在两者上也设置了layout_width =“0dp”。这应该工作,因为我已经研究了很多。

我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/button_text_white">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:scrollbars="none">

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

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:background="@drawable/image"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:padding="20dp"
                android:orientation="vertical"
                android:gravity="bottom">

                <TextView
                    android:id="@+id/text_view_title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="25dp"
                    android:gravity="center"
                    android:textSize="24dp"
                    android:textColor="@color/button_text_white"
                    android:visibility="invisible"/>

                <TextView
                    android:id="@+id/text_username"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_username_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_username"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="text"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_username_hint"/>

                <TextView
                    android:id="@+id/text_email"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_email_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="textEmailAddress"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_email_hint"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sign_up_in_password_text"
                    android:textColor="@color/color"/>

                <EditText
                    android:id="@+id/edit_text_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:inputType="textPassword"
                    android:textColor="@color/color"
                    android:hint="@string/sign_up_in_password_hint"/>

                <TextView
                    android:id="@+id/text_view_forgotten_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="15dp"
                    android:gravity="right"
                    android:text="@string/forgotten_password_text"
                    android:textColor="@color/color"/>

                <Button
                    android:id="@+id/button_sign_up_in"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:textColor="@color/color"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</RelativeLayout>

谢谢,感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

我想说你的问题是LinearLayout的高度设置为match_parent内的ScrollView

如您所知,ScrollView会扩展以适应其内容 - 现在,如果您将其内容扩展为与其父级(match_parent)一样大,那么您就有了一个悖论。

尝试将ScrollView高度的子项设置为wrap_content而不是match_parent

答案 1 :(得分:0)

您的ScrollView&amp;它的父亲RelativeLayout。减少你的布局如下。

<LinearLayout>
    <ImageView w="1"/>
    <ScrollView w="1">
        <LinearLayout>
            ....
        </LinearLayout>
    </ScrollView>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/button_text_white">

   <ImageView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@drawable/image"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="none">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="20dp"
            android:orientation="vertical"
            android:gravity="bottom">

            <TextView
                android:id="@+id/text_view_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="25dp"
                android:gravity="center"
                android:textSize="24dp"
                android:textColor="@color/button_text_white"
                android:visibility="invisible"/>

            <TextView
                android:id="@+id/text_username"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_username_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="text"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_username_hint"/>

            <TextView
                android:id="@+id/text_email"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_email_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="textEmailAddress"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_email_hint"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sign_up_in_password_text"
                android:textColor="@color/color"/>

            <EditText
                android:id="@+id/edit_text_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:inputType="textPassword"
                android:textColor="@color/color"
                android:hint="@string/sign_up_in_password_hint"/>

            <TextView
                android:id="@+id/text_view_forgotten_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="15dp"
                android:gravity="right"
                android:text="@string/forgotten_password_text"
                android:textColor="@color/color"/>

            <Button
                android:id="@+id/button_sign_up_in"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:textColor="@color/color"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>