无法将框架布局高度设置为匹配父级
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内的父级不匹配