当 FragmentContainerView 是布局的一部分时,底部工作表片段不显示

Duo*_*uos 5 android android-fragments

由于底部工作表片段没有显示,我最初认为问题出在我的 Java 代码 \xe2\x80\x94 中,可能是适配器中的设置不正确,使用了错误的片段管理器等 \xe2\x80\x94 而不是 XML 中布局。经过几天的沮丧,我终于找到了罪魁祸首。

\n
<androidx.coordinatorlayout.widget.CoordinatorLayout\n    android:layout_width="match_parent"\n    android:layout_height="match_parent">\n\n    <androidx.fragment.app.FragmentContainerView\n        android:id="@+id/nav_host_fragment"\n        android:layout_width="match_parent"\n        android:layout_height="match_parent"\n        android:layout_marginBottom="?android:attr/actionBarSize"\n        android:name="androidx.navigation.fragment.NavHostFragment"\n        app:defaultNavHost="true"\n        app:navGraph="@navigation/analytics"\n        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>\n\n    <androidx.constraintlayout.widget.ConstraintLayout\n        android:id="@+id/bottom_sheet"\n        android:layout_width="match_parent"\n        android:layout_height="match_parent"\n        android:background="@color/color_surface"\n        android:elevation="@dimen/size_2"\n        app:behavior_peekHeight="?android:attr/actionBarSize"\n        app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">\n\n        <com.google.android.material.tabs.TabLayout\n            android:id="@+id/tabs"\n            android:layout_width="match_parent"\n            android:layout_height="?android:attr/actionBarSize"/>\n\n        <androidx.viewpager.widget.ViewPager\n            android:id="@+id/pager"\n            android:layout_width="match_parent"\n            android:layout_height="0dp"\n            app:layout_constraintBottom_toBottomOf="parent"\n            app:layout_constraintStart_toStartOf="parent"\n            app:layout_constraintTop_toBottomOf="@id/tabs"/>\n    </androidx.constraintlayout.widget.ConstraintLayout>\n</androidx.coordinatorlayout.widget.CoordinatorLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

当底部工作表折叠时,其选项卡及其标签可见(在 处peekHeight),我可以点击它们。但是,当底部工作表展开时,选项卡仍然可见,但其片段中没有显示任何内容。我已经确定,如果我注释掉\xe2\x80\x94 ,如果我使用旧视图而不是 \xe2\x80\x94 ,底部工作表将按预期工作,所有选项卡中的所有内容都FragmentContainerView无关紧要fragment正在显示。

\n

发生什么了?

\n

小智 0

首先,你的TabLayout需要app:layout_constraintTop_toTopOf="parent"

并使ViewPager高度不是 0dp,例如android:layout_height="match_parent"500dp .. 类似的东西。

如果这不能解决问题,您可以使用其他布局(例如RelativeLayoutLinearLayout)作为BottomSheet 根。