如何从(和替换)TabLayout 和 ViewPager 移动到新片段?
Posted
技术标签:
【中文标题】如何从(和替换)TabLayout 和 ViewPager 移动到新片段?【英文标题】:How to move from (and replace) TabLayout and ViewPager to a new fragment? 【发布时间】:2021-05-08 12:51:11 【问题描述】:我想从我的主屏幕(使用 TabLayout 和 ViewPager)导航到新片段(不是标签)。
我希望我的新片段完全覆盖屏幕(而不是 ViewPager 的一部分)。
您可以在下面看到(上半部分)主屏幕的外观,它有 4 个选项卡。
这是主片段顶部的新片段的外观。它是在主屏幕上单击“学习”后显示的。可以看到,TabLayout 和 ViewPager 不再显示了。
换句话说,当我在主屏幕(具有 TabLayout 和 ViewPager)并执行操作(例如单击 Study)时,我想显示一个覆盖整个屏幕的新片段(包括 TabLayout和 ViewPager)。我不希望这个新片段成为 TabLayout 和 ViewPager 中的新选项卡,也不希望新片段替换另一个选项卡。我希望新片段完全替换之前屏幕上显示的内容。
如果它有助于理解问题,这就是我的 activity_main.xml(主屏幕)的样子(不是照片中的那个)。我想从这里移到一个新片段,并用新片段完全替换这个 activity_main.xml 布局。
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_
android:layout_
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_
android:layout_
android:theme="@style/Theme.MyApp.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="@android:color/darker_gray" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_
android:layout_
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
【问题讨论】:
有点难理解你的问题,添加一些代码让你的问题更容易理解 也许你应该考虑创建一个新的Activity
并导航到它。我知道 Google 开发人员建议使用单个 Activity
,但这条规则也有例外。
【参考方案1】:
我找到了解决办法:
val trans = supportFragmentManager.beginTransaction()
trans.replace(android.R.id.content, MyNewFragment())
trans.addToBackStack(null)
trans.commit()
另一种解决方案是将 activity_main.xml 的内容移动到新的 Fragment 中并使用 nav_graph.xml 进行导航。
【讨论】:
能否详细说明您找到的解决方案?以上是关于如何从(和替换)TabLayout 和 ViewPager 移动到新片段?的主要内容,如果未能解决你的问题,请参考以下文章
带有片段的 NavigationDrawer 内的 Android TabLayout
如何使用 TabLayout 将数据从 Activity 传递到 Fragment
硅谷新闻8--TabLayout替换ViewPagerIndicator