无法使 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 颜色的背景,其 clickable
和 focusable
设置为 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>
我在 ScrollView
中有一个 parent 布局 RelativeLayout
,其中包含几个 child 布局和一个 child 布局(即 preview_wrapper ) 在 RelativeLayout
的末尾用 match_parent
LayoutParam
填充它并包含一个带有 alpha 颜色的背景,其 clickable
和 focusable
设置为 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>