为什么我的android:layout_weight不起作用?

时间:2013-12-23 08:29:12

标签: android android-layout layout

我创建了一个虚拟View,并用weight = 1

填充它

我希望所有额外的空间都能进入该视图,但实际上并没有这样做。

我错过了什么?

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res/com.me"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:gravity="center_horizontal">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

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

                <com.m.view.text.MyTextView
                    android:id="@+id/whyResgisterHeaderText"
                    style="@style/textOnBg"
                    android:layout_marginBottom="10dp"
                    android:layout_marginTop="30dp"
                    android:text="WHY REGISTER?"
                    android:textAllCaps="true"
                    android:textColor="@android:color/white"
                    app:font_type="varela" />

                <com.m.view.text.MyTextView
                    android:id="@+id/whyResgisterBodyText"
                    style="@style/textOnBg"
                    android:lineSpacingMultiplier="1.2"
                    android:text="first line\nsecond line\nthird line\nforth line"
                    android:textStyle="italic" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="20dp"
                    android:layout_marginTop="20dp"
                    android:src="@drawable/signup_illu_why" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1" />

                <LinearLayout
                    android:id="@+id/gotItAction"
                    android:layout_width="283dp"
                    android:layout_height="52dp"
                    android:layout_marginBottom="20dp"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="10dp"
                    android:background="@drawable/btn_selector"
                    android:clickable="true"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <com.m.view.text.MyTextView
                        android:id="@+id/goItText"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:text="Got it"
                        android:textColor="#00bcfe"
                        android:textSize="16dp"
                        android:textStyle="italic" />
                </LinearLayout>
            </LinearLayout>
        </ScrollView>
    </RelativeLayout>

2 个答案:

答案 0 :(得分:0)

我认为您必须在第一个LinearLayout(包含带权重的视图的那个)中添加android:weightSum="1.0"

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

答案 1 :(得分:0)

如果您使用LinearLayout之类的内容作为父元素,并在其layout_weight中使用child element,则可能会得到所需的结果。但是,如果您将ScrollView作为主要父级并在其layout_weight中使用child element属性,则可能无法证明这是一个好结果。 Bcs,ScrollView是无穷无尽的,它只会在其子元素完成的地方结束。因此,显然如果您使用weight内部Android可能无法确定实际结束scroll和行为不端的地方。

因此,请尝试将包含LinearLayout(带有Got It文本)的TextView保留在主布局的底部。移除LinearLayout内的ScrollView并将其粘贴到ScrollView之外,以便在滚动时位于底部。

试试这个..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.me"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

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

            <com.m.view.text.MyTextView
                android:id="@+id/whyResgisterHeaderText"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="30dp"
                android:text="WHY REGISTER?"
                style="@style/textOnBg"
                android:textAllCaps="true" 
                android:textColor="@android:color/white"
                app:font_type="varela"/>

            <com.m.view.text.MyTextView
                android:id="@+id/whyResgisterBodyText"
                style="@style/textOnBg"
                android:lineSpacingMultiplier="1.2"
                android:text="first line\nsecond line\nthird line\nforth line"
                android:textStyle="italic" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:layout_marginTop="20dp"
                android:src="@drawable/signup_illu_why" />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:id="@+id/gotItAction"
        android:layout_width="283dp"
        android:layout_height="52dp"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/btn_selector"
        android:clickable="true"
        android:gravity="center"
        android:orientation="horizontal" >

        <com.m.view.text.MyTextView
            android:id="@+id/goItText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="Got it"
            android:textColor="#00bcfe"
            android:textSize="16dp"
            android:textStyle="italic" />
    </LinearLayout>

</RelativeLayout>