在 ScrollView 中设置重力

Setting gravity inside a ScrollView

我有一个带有 ScrollView 和两个 LinearLayouts 的片段。我希望能够将第一个 LinearLayout 放在顶部(重力顶部),将第二个放在底部。这是我的代码

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        tools:context=".activities.NavigationDrawerFragment"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:background="@color/darkblue"
            android:paddingBottom="40dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="20dp"
            android:layout_gravity="center|top">

            <ImageView
                android:id="@+id/img_drawler_value"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher"
                />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginLeft="5dp">
                <TextView
                    android:id="@+id/txt_drawler_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/txt_drawler_name"
                    android:textColor="@android:color/white"
                    android:textStyle="bold"
                    android:textSize="20sp" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    >
                    <TextView
                        android:id="@+id/txt_drawler_time_avariable"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/txt_drawler_time_avariable"
                        android:textColor="@android:color/white"
                        android:textSize="12sp"
                        android:textIsSelectable="false" />
                    <TextView
                        android:id="@+id/txt_drawler_time_value"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/empty"
                        android:textSize="12sp"
                        android:textColor="@android:color/white"/>
                </LinearLayout>
            </LinearLayout>


        </LinearLayout>

        <ScrollView
            android:scrollbars="none"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            android:id="@+id/id_drawable_scrollView">

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

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

                        <Button
                            android:id="@+id/btn_drawler_home"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:background="@android:color/transparent"
                            android:gravity="center|left"
                            android:paddingBottom="10dp"
                            android:paddingLeft="10dp"
                            android:paddingTop="10dp"
                            android:text="@string/btn_drawler_home"
                            android:textColor="@android:color/black"
                            android:textSize="16sp" />

                        <View
                            android:layout_width="fill_parent"
                            android:layout_height="1dp"
                            android:background="@color/lightgray" />

                        <Button
                            android:id="@+id/btn_drawler_select"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="@string/btn_drawler_class_select"
                            android:textColor="@android:color/black"
                            android:background="@android:color/transparent"
                            android:gravity="center|left"
                            android:textSize="16sp"
                            android:paddingTop="10dp"
                            android:paddingBottom="10dp"
                            android:paddingLeft="10dp" />

                        <View
                            android:layout_width="fill_parent"
                            android:layout_height="1dp"
                            android:background="@color/lightgray"/>

                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:background="@color/green"
                    android:paddingBottom="20dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="30dp"
                    android:gravity="bottom">

                    <TextView
                        android:id="@+id/btn_drawler_toc"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:text="@string/btn_drawler_toc"
                        android:gravity="left|center"
                        android:textColor="@android:color/white"
                        android:textSize="16sp"
                        android:paddingBottom="20dp"
                        />

                    <TextView
                        android:id="@+id/btn_drawler_faq"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:text="@string/btn_drawler_faq"
                        android:gravity="left|center"
                        android:textColor="@android:color/white"
                        android:textSize="16sp"
                        android:paddingBottom="20dp"
                        />

                    <TextView
                        android:id="@+id/btn_drawler_contact"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:text="@string/btn_drawler_contact"
                        android:gravity="left|center"
                        android:textColor="@android:color/white"
                        android:textSize="16sp"
                        android:paddingBottom="20dp"
                        />

                    <TextView
                        android:id="@+id/btn_drawler_logout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:text="@string/btn_drawler_logout"
                        android:gravity="left|center"
                        android:textColor="@android:color/white"
                        android:textSize="16sp"
                        />

                </LinearLayout>
            </LinearLayout>
        </ScrollView>

    </LinearLayout>

ScrollView 的子项似乎不能 fill_parent 或 match_parent。这可能吗?

我想达到的目标

谢谢

更新 1

我不确定为什么不能使用此结构,在最后一种情况下滚动不起作用。

<RelativeLayout>
    <ScrollView>
        <LinearLayout>
            <LinearLayout>
            </LinearLayoyt>
            <LinearLayout>
            </LinearLayoyt>
        </LinearLayoyt>
    </ScrollView>
    <LinearLayout>
    </LinearLayoyt>
</RelativeLayout>

顺便说一句,我找到了适合我的设置(使用不同的 xml 布局),但我不确定为什么它不起作用,也许有人可以帮助我理解。

您希望位于视图底部的线性布局位于另一个具有 "center|top" 引力的线性布局之下,因此第二个线性布局将位于父布局的底部 尝试将第二个布局作为父布局而不是另一个布局的子布局

不使用 LinearLayout,只需使用 RelativeLayout(作为 ScrollView 中的包装器)。然后代替重力顶部和底部,使用:

android:layout_alignParentTop="true" 在顶部 LinearLayout android:layout_alignParentBottom="true"在底部LinearLayout