android - 当 FragmentContainerView 是布局的一部分时,底部表单 fragment 未显示

标签 android android-fragments

由于底部的工作表 fragment 没有显示出来,我最初认为问题出在我的 Java 代码中——可能是适配器中的设置不正确、使用了错误的 fragment 管理器等——而不是 XML 布局。经过几天的挫折,我终于确定了罪魁祸首。

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/nav_host_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="?android:attr/actionBarSize"
        android:name="androidx.navigation.fragment.NavHostFragment"
        app:defaultNavHost="true"
        app:navGraph="@navigation/analytics"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color_surface"
        android:elevation="@dimen/size_2"
        app:behavior_peekHeight="?android:attr/actionBarSize"
        app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">

        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"/>

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/tabs"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
当底部工作表处于折叠状态时,其选项卡及其标签可见(在 peekHeight 处),我可以点击它们。但是,当底部工作表展开时,选项卡仍然可见,但它们的 fragment 中没有显示任何内容。我已经确定如果我注释掉 FragmentContainerView — 在这里,如果我使用旧的 fragment 真的没关系而是查看 - 底部工作表按预期工作,显示所有选项卡中的所有内容。
发生什么了?

最佳答案

首先,您的 标签布局 需要应用程序:layout_constraintTop_toTopOf="父"
并制作浏览器 0dp 以外的高度,例如 android:layout_height="match_parent" 500dp ..类似的东西。
如果这不能解决问题,您可以使用其他布局,例如 相对布局 线性布局 作为 BottomSheet 根。

关于android - 当 FragmentContainerView 是布局的一部分时,底部表单 fragment 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66331550/

相关文章:

java - 如何使用 Spinner 下拉菜单更改 TextView 小部件上的文本

java - 动态设置 fragment

android - 无法实例化 PagerAdapter 类型

android - 激活列表行和主 fragment 之间的绘图指示器

android - OkHttp3库的RequestBody和MultipartBody的区别?

java - 使用另一个字符串生成 32 位字符串?

java - 如何在节点Firebase中获得唯一的随机产品?

android - 在 Android 中打开启动应用程序之前如何避免加载主屏幕?

android - 当我创建新的 TextToSpeech 实例时,onInit 永远不会在 Android 4.4.2 上发生

java - 我如何让 View 将它们的状态保存在 fragment 中?