如何使 tablayout 片段适合 INSIDE viewpager

Posted

技术标签:

【中文标题】如何使 tablayout 片段适合 INSIDE viewpager【英文标题】:How to make tablayout fragment fit INSIDE viewpager 【发布时间】:2021-11-27 00:46:24 【问题描述】:

我的 tablayout/viewpager 有一个简单的片段:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".pkgFragment.InputDataOverviewFragment"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"

    >


    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/abToolBarLayout"
        android:layout_
        android:layout_
        android:background="@color/BrightYellowCrayola"
        >
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/tbMenuIconWithTitle"
            app:navigationIcon="@drawable/baseline_menu_24"
            android:layout_
            android:layout_
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            >
            <androidx.appcompat.widget.SearchView
                android:id="@+id/svInputdata"
                android:layout_
                android:layout_
                app:defaultQueryHint="@string/search_incometypes"
                app:iconifiedByDefault="false"
                app:searchIcon="@null"
                app:queryBackground="@android:color/transparent"
                app:submitBackground="@android:color/transparent"
                android:imeOptions="flagNoExtractUi"
                />

        </androidx.appcompat.widget.Toolbar>
        <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabLayoutInputDataTypes"
            android:layout_
            android:layout_
            app:tabMode="scrollable"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:background="@color/BrightYellowCrayola"
            />
    </com.google.android.material.appbar.AppBarLayout>
        <androidx.viewpager2.widget.ViewPager2
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:layout_below="@id/tabLayoutInputDataTypes"
            android:id="@+id/viewPagerInputDataTypes"
            android:layout_
            android:layout_
            />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

我的片段在选项卡布局上被选中时显示:

<?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"
    android:layout_
    android:layout_
    android:focusableInTouchMode="true"

    >

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rvListIncomeType"
            android:layout_
            android:layout_
            android:paddingStart="@dimen/zero_margin_when_normal"
            android:paddingEnd="@dimen/zero_margin_when_normal"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fabAddDeleteIncomeType"
        android:layout_
        android:layout_
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:contentDescription="@string/add_incometype"
        android:minHeight="48dp"
        android:src="@drawable/baseline_person_add_24"
        app:backgroundTint="@color/BrightYellowCrayola" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

问题是我的片段的高度与我的父片段匹配,这就是为什么片段的高度不完全适合我的 viewpager:

如您所见,浮动操作按钮在下半部分消失了,第一个工具栏基本上被拖了上去,并没有完全出现。

使用片段处理标签布局中的高度问题的正确解决方案是什么?

【问题讨论】:

对我来说,您似乎正在使用 android:fitsSystemWindows="true" 作为您的 Activity @snachmsm hmm 不,我只将它用于我的 tablayoutfragment(见下文)我之前也尝试过删除它,但结果并没有明显改变。 共享布局不会发生这种情况。有任何 java/kotlin 代码吗?请分享..同时分享样式xml文件 @Zain 我在下面发布了我的解决方案。这似乎是一个布局问题 【参考方案1】:

为了使其正常工作,我(当前)删除了两行:

android:fitsSystemWindows="true"

app:layout_scrollFlags="scroll|enterAlways"

如果删除它是个好主意,我会及时通知你。

【讨论】:

以上是关于如何使 tablayout 片段适合 INSIDE viewpager的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段更改 Tablayout 的背景颜色?

如何在不单击的情况下显示片段

如何使用 tabLayout 在 ViewPager 中显示片段?

TabLayout - 如何仅在选项卡上加载片段

如何更新 Tablayout 中的片段? (Viewpager2, FragmentStateAdapter)

如何使用tablayout和片段管理java文件[关闭]