Как использовать PagerTabStrip с ViewPager2

Я хочу использовать ViewPager2, потому что он должен заменить ViewPager, и я надеюсь избавиться от некоторых проблем, которые у меня были с ViewPager.

Я хочу сделать это:

<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/detail_pager_view"
    android:layout_height="match_parent"
    android:layout_width="match_parent" >

    <androidx.viewpager.widget.PagerTabStrip
        android:id="@+id/detail_pager_strip"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_width="match_parent" />

</androidx.viewpager2.widget.ViewPager2>

Но ViewPager2 жалуется, что не может иметь детей. С другой стороны, если я перемещаю PagerTabStrip из ViewPager2, он жалуется, что он должен быть потомком ViewPager.

Так что кажется, что PagerTabStrip не совместим с ViewPager2. Я прав?

Есть ли какое-либо текущее решение для этого? (кроме написания собственного PagerTabStrip)


person Andreas Jarl    schedule 27.11.2019    source источник


Ответы (1)


Ссылаясь на это, вам нужно использовать TabLayout

Использование ViewPager2 в Android

<com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <com.google.android.material.tabs.TabLayout
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
</com.google.android.material.appbar.AppBarLayout>

<androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewpager"
        app:layout_anchor="@id/tabs"
        app:layout_anchorGravity="bottom"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
/>

person Gilberto Ibarra    schedule 26.02.2020