无法使 child 布局填充其在 ScrollView 中的 parent

Unable to make child layout fill its parent inside ScrollView

我在 ScrollView 中有一个 parent 布局 RelativeLayout,其中包含几个 child 布局和一个 child 布局(即 preview_wrapper ) 在 RelativeLayout 的末尾用 match_parent LayoutParam 填充它并包含一个带有 alpha 颜色的背景,其 clickablefocusable 设置为 true 以便parent 布局内的视图不可点击。但它对我不起作用我无法看到最后一个 child 填充 parent 布局带到前面。然而,当我删除 ScrollView 它的工作完美..但是我需要把它放在 ScrollView 里面,因为我在 ScrollView 外面制作 preview_wrapper 我无法滚动布局。

结构:

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

        <!-- the layout I want to bring in front of above linear layout and cover its parent -->
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/alpha_white"
            android:clickable="true"
            android:focusable="true"
            android:id="@+id/preview_wrapper"
            ></RelativeLayout>


    </RelativeLayout>

</ScrollView>

XML:

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

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="4"
            android:layout_below="@+id/car_pager"
            android:orientation="horizontal"
            android:id="@+id/action_wrap"
            >
            <RelativeLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:id="@+id/action_save"
                android:background="@drawable/btn_action_selector"
                android:clickable="true"
                android:focusable="true"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"

                >
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:orientation="vertical"
                    >
                    <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:src="@drawable/ic_star_hollow"

                        android:tint="@color/white"
                        android:id="@+id/ic_save"
                        android:layout_gravity="center"
                        />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:textColor="@color/white"
                        android:text="@string/save"
                        android:textAllCaps="false"
                        android:layout_marginTop="10dp"

                        />
                </LinearLayout>



            </RelativeLayout>

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/action_email"
                android:layout_weight="1"
                android:background="@drawable/btn_action_selector"
                android:clickable="true"
                android:focusable="true"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"
                >
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:orientation="vertical"
                    >

                    <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:src="@drawable/ic_email_action"
                        android:layout_centerInParent="true"
                        android:tint="@color/white"
                        android:layout_gravity="center"
                        />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:textColor="@color/white"
                        android:text="@string/contact"
                        android:textAllCaps="false"
                        android:layout_marginTop="10dp"
                        />


                </LinearLayout>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/action_price_alert"
                android:layout_weight="1"
                android:background="@drawable/btn_action_selector"
                android:clickable="true"
                android:focusable="true"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"
                >
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:orientation="vertical"
                    >

                    <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:src="@drawable/ic_electric"
                        android:layout_centerInParent="true"
                        android:tint="@color/white"
                        android:id="@+id/price_alt_btn"
                        android:layout_gravity="center"
                        />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:textColor="@color/white"
                        android:text="@string/price_alert"
                        android:textAllCaps="false"
                        android:layout_marginTop="10dp"
                        />

                </LinearLayout>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:id="@+id/action_flag"
                android:layout_weight="1"
                android:background="@drawable/btn_action_selector"
                android:clickable="true"
                android:focusable="true"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"

                >

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

                    <ImageView
                        android:layout_width="15dp"
                        android:layout_height="15dp"
                        android:src="@drawable/ic_flag_hollow"
                        android:layout_centerInParent="true"
                        android:tint="@color/white"
                        android:layout_gravity="center"
                        />
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:textColor="@color/white"
                        android:text="@string/abuse_report"

                        android:layout_marginTop="10dp"
                        android:textAllCaps="false"
                        />

                </LinearLayout>
            </RelativeLayout>

        </LinearLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/alpha_white"
            android:clickable="true"
            android:focusable="true"
            android:id="@+id/preview_wrapper"
            ></RelativeLayout>

    </RelativeLayout>


    </ScrollView>

</RelativeLayout>

然后将 RelativeLayout 变成 FrameLayout 并重新排列子布局,如下所示

<ScrollView>
    <FrameLayout>

        <!-- the layout I want to bring in front of above linear layout and cover its parent -->

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/alpha_white"
            android:clickable="true"
            android:focusable="true"
            android:id="@+id/preview_wrapper"
            ></RelativeLayout>

        <LinearLayout>
        </LinearLayout>
    </FrameLayout>

</ScrollView>