无法将框架布局高度设置为匹配父级

Posted

技术标签:

【中文标题】无法将框架布局高度设置为匹配父级【英文标题】:Not able to set the Frame Layout height to Match Parent 【发布时间】:2021-11-29 08:43:29 【问题描述】:

我的项目有两个 Fragment 类,在我的第一个 FragmentA 中,我在 FragmentA xml 文件中添加了一个 FrameLayout,命名为 filter_pop_up_frame_lyt_container。所以从FragmentA 中单击一个按钮,我将一个新的FragmentB 添加到FragmentA 的框架布局中。所以我的意图是看到framelayout 高度匹配父级。当我在 FragmentA 中的 recyclerView 项目被加载时,Frame Layout 的高度仅占用 FragmentB 的高度。我们如何使框架布局匹配父级。

尝试使用此解决方案 :FrameLayout height not matching parent ,但对我不起作用。

sampleCode for my FragmentA xml File:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_
    android:layout_
    android:background="@color/tastry_btn_txt"
    tools:openDrawer="start">

    <RelativeLayout
        android:layout_
        android:layout_>

        <com.agrawalsuneet.dotsloader.loaders.CircularDotsLoader
            android:id="@+id/circle_dot_loader"
            android:layout_
            android:layout_
            android:layout_centerInParent="true"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:elevation="100dp"
            android:foregroundGravity="center"
            android:visibility="visible"
            app:loader_bigCircleRadius="25dp"
            app:loader_circleRadius="5dp"
            app:loader_defaultColor="@color/blue_dark"
            app:loader_firstShadowColor="@color/lit_grey6"
            app:loader_secondShadowColor="@color/lit_grey4"
            app:loader_selectedColor="@color/lit_grey3"
            app:loader_showRunningShadow="true" />
    </RelativeLayout>


    <RelativeLayout
        android:layout_
        android:layout_
        android:orientation="vertical">
        <!-- The ActionBar displayed at the top -->
        <androidx.appcompat.widget.Toolbar xmlns:app="http://schemas.android.com/tools"
            xmlns:local="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_
            android:layout_
            android:background="@color/palate_survey_bg"
            app:ignore="NamespaceTypo"
            local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


            <androidx.appcompat.widget.SearchView
                android:id="@+id/Advance_search"
                android:layout_
                android:layout_
                android:layout_marginEnd="50dp"
                android:background="@drawable/filter_search_bar_bg_lyt"
                app:iconifiedByDefault="false"
                app:queryHint="Search">

            </androidx.appcompat.widget.SearchView>

            <View
                android:id="@+id/filter_loc_divider"
                android:layout_
                android:layout_
                android:layout_margin="20dp"
                android:layout_marginTop="40dp"
                android:background="#99a3bc" />

            <LinearLayout
                android:layout_
                android:layout_
                android:orientation="horizontal"></LinearLayout>
        </androidx.appcompat.widget.Toolbar>

        <LinearLayout
            android:id="@+id/search_container"
            android:layout_
            android:layout_
            android:layout_below="@+id/toolbar"
            android:background="#66100202"
            android:clickable="true"
            android:orientation="vertical"
            android:translationZ="15dp"
            android:visibility="gone">

            <TextView
                android:layout_
                android:layout_
                android:layout_margin="8dp"
                android:fontFamily="sans-serif-medium"
                android:text="Popular Searches"
                android:textColor="@color/white"
                android:textSize="22dp"
                android:textStyle="normal">

            </TextView>

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycler_advance_search"
                android:layout_
                android:layout_ />
        </LinearLayout>

        <LinearLayout
            android:layout_
            android:layout_
            android:layout_below="@+id/toolbar"
            android:orientation="vertical">

            <androidx.core.widget.NestedScrollView
                android:layout_
                android:layout_
                android:background="@color/tastry_btn_txt"
                android:fillViewport="true">

                <RelativeLayout
                    android:layout_
                    android:layout_
                    android:orientation="vertical">

                    <LinearLayout
                        android:id="@+id/filter_layout"
                        android:layout_
                        android:layout_
                        android:layout_margin="15dp"
                        android:gravity="center_vertical"
                        android:orientation="horizontal">

                        <ImageView
                            android:layout_
                            android:layout_
                            android:layout_marginLeft="10dp"
                            android:src="@drawable/filter">

                        </ImageView>

                        <TextView
                            android:id="@+id/filter_text"
                            android:layout_
                            android:layout_
                            android:layout_marginStart="10dp"
                            android:fontFamily="sans-serif-medium"
                            android:text="Filter By"
                            android:textColor="@color/white"
                            android:textSize="22sp"
                            android:textStyle="normal" />

                    </LinearLayout>

                    <LinearLayout

                        android:id="@+id/filter_container_lyt"
                        android:layout_
                        android:layout_
                        android:layout_below="@+id/filter_layout"
                        android:layout_alignParentTop="true"
                        android:layout_marginTop="2dp"
                        android:background="#495471"
                        android:gravity="center_vertical"
                        android:orientation="vertical">

                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/recycler_view_filter_category"
                            android:layout_
                            android:layout_
                            app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget" />

                    </LinearLayout>

                    <RelativeLayout
                        android:id="@+id/wine_complete_lyt"
                        android:layout_
                        android:layout_
                        android:layout_below="@+id/filter_layout"
                        android:layout_marginStart="3dp"
                        android:orientation="vertical">

                        <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/recycler_view_red_wine_category"
                            android:layout_
                            android:layout_
                            android:layout_marginTop="10dp" />

                    </RelativeLayout>

                    <FrameLayout
                        android:id="@+id/filter_pop_up_frame_lyt_container"
                        android:layout_
                        android:layout_
                        android:layout_below="@+id/filter_layout"
                        android:background="@color/orange"
                        android:elevation="50dp"
                        android:translationZ="30dp" />
                </RelativeLayout>

            </androidx.core.widget.NestedScrollView>
        </LinearLayout>

    </RelativeLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_
        android:layout_
        android:layout_gravity="start"
        android:background="@color/palate_survey_bg"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header"
        app:itemIconSize="20dp"
        app:itemIconTint="@color/white"
        app:itemTextColor="@color/white"
        app:menu="@menu/drawermenu" />

</androidx.drawerlayout.widget.DrawerLayout>

sampleCode for FragmentB layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linear_layout_root_price_layout"
    android:layout_
    android:layout_
    android:background="#66FF0000"
    android:orientation="vertical">
    <!--    android:background="@drawable/filter_bg_round_corner"-->

    <LinearLayout
        android:layout_
        android:layout_
        android:background="@drawable/filter_bg_round_corner"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/progress_layout"
            android:layout_
            android:layout_
            android:layout_margin="15dp"
            android:orientation="vertical">

            <com.google.android.material.slider.RangeSlider
                android:id="@+id/filter_price_ranger_Slider"
                style="@style/Theme.TastrySampleApp"
                android:layout_
                android:layout_
                android:progressDrawable="@drawable/progress_layout_bg"
                android:stepSize="1"
                android:theme="@style/Theme.TastrySampleApp"
                android:valueFrom="0.0"
                android:valueTo="100.0"
                app:labelBehavior="gone"
                app:thumbColor="#01b0c3"
                app:tickVisible="false"
                app:values="@array/initial_slider_values" />

            <RelativeLayout
                android:layout_
                android:layout_>

                <TextView
                    android:id="@+id/onStartTrackingTouch"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="9dp"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text="$0"
                    android:textColor="@color/black"
                    android:textSize="16sp">

                </TextView>

                <TextView
                    android:id="@+id/onStopTrackingTouch"
                    android:layout_
                    android:layout_
                    android:layout_alignParentRight="true"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text="$100+"
                    android:textColor="@color/black"
                    android:textSize="16sp">

                </TextView>
            </RelativeLayout>
        </LinearLayout>

        <View
            android:layout_
            android:layout_
            android:layout_margin="10dp"
            android:layout_marginTop="20dp"
            android:background="#99a3bc">

        </View>

        <LinearLayout
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:gravity="right"
            android:orientation="horizontal"
            android:padding="14dp">

            <TextView
                android:id="@+id/filter_price_wine_count"
                android:layout_
                android:layout_
                android:ellipsize="end"
                android:gravity="center"
                android:maxLines="1"
                android:text="1234"
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold"
                android:visibility="gone">

            </TextView>

            <TextView
                android:id="@+id/filter_price_wine_txt"
                android:layout_
                android:layout_
                android:layout_marginLeft="5dp"
                android:layout_weight="0"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="Wines"
                android:textColor="@color/black"
                android:textSize="20sp"
                android:textStyle="bold"
                android:visibility="gone">

            </TextView>


            <View
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:layout_weight="1" />

            <LinearLayout
                android:id="@+id/filter_price_root_clear_lyt"
                android:layout_
                android:layout_
                android:layout_gravity="center"
                android:layout_marginLeft="50dp"
                android:layout_toLeftOf="@+id/filter_price_Apply"
                android:background="@drawable/filter_clear_bg"
                android:gravity="center"
                android:visibility="gone">

                <ImageView
                    android:id="@+id/close_filter_price"
                    android:layout_
                    android:layout_
                    android:layout_gravity="center"
                    android:layout_marginTop="2dp"
                    android:src="@drawable/close_white">

                </ImageView>

                <TextView
                    android:id="@+id/clear_price_filter"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="6dp"
                    android:layout_marginTop="3dp"
                    android:layout_toRightOf="@id/close_filter_price"
                    android:text="Clear All"
                    android:textColor="#f2faff"
                    android:textStyle="bold">

                </TextView>

                <TextView
                    android:id="@+id/price_clear_count"
                    android:layout_
                    android:layout_
                    android:layout_marginLeft="4dp"
                    android:layout_marginTop="3dp"
                    android:layout_toRightOf="@id/clear_price_filter"
                    android:textColor="#f2faff"
                    android:textStyle="bold">

                </TextView>

            </LinearLayout>

            <com.google.android.material.button.MaterialButton
                android:id="@+id/filter_price_Apply"
                android:layout_
                android:layout_
                android:layout_alignParentRight="true"
                android:layout_marginLeft="10dp"
                android:background="@drawable/filter_apply_bg"
                android:gravity="center"
                android:text="Apply"
                android:textAllCaps="false"
                android:textColor="#f2faff"
                android:textSize="12sp"
                android:visibility="gone">

            </com.google.android.material.button.MaterialButton>

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

【问题讨论】:

你的框架布局在哪里? @Praveen-您可以通过向下滚动查看在 FragmentA xml 代码示例中添加的框架布局。 filter_pop_up_frame_lyt_container 是 FrameLayout 的 id。 【参考方案1】:

当我从布局中删除 scrollview 时,框架布局的高度设置为与父级匹配。完美运行。

【讨论】:

以上是关于无法将框架布局高度设置为匹配父级的主要内容,如果未能解决你的问题,请参考以下文章

ListView布局高度与Fragment中的RecyclerView内的父级不匹配

使用flex布局,子元素怎么高度自适应

FrameLayout 高度与父级不匹配

在 CSS flexbox 布局中,如果父级可垂直滚动,是不是有办法将子块高度锁定到父级(滚动)高度?

清除浮动的方法

使用自定义布局将宽度和高度设置为 AlertDialog 无法正确应用