简体   繁体   中英

Android layout_weight not working as it should be

I'm trying to set my ImageView and LinearLayout to have half of the screen each. This works fine on tablets, but on smaller screens the image takes up the entire screen (thus, not actually working).

The way I see it is, I have set a layout_weight="1" on both the ImageView and LinearLayout and the layout_width="0dp" on both also. This SHOULD work, as I have researched a lot into this.

My Code:

<?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>

Thanks, appreciate any help!

I would say your problem is with your LinearLayout 's height being set to match_parent inside of a ScrollView .

As you know, a ScrollView expands to fit its contents - now if you tell its contents to expand as big as its parent (match_parent), then you have a paradox.

Try setting the child of your ScrollView's height to wrap_content instead of match_parent .

There is no use for your ScrollView & it's parent RelativeLayout. Cut down your layout as below.

<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>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM