标签: android-viewpager2

在Android中使用ViewPager2

我开始了解ViewPager2,并尝试实现它,但是没有找到任何合适的示例。

谁能告诉我如何使用它。

我在寻找提示,而不是示例。

android android-viewpager android-viewpager2

35
推荐指数
4
解决办法
2万
查看次数

使用 FragmentStateAdapter 删除 viewPager2 中的片段,但仍显示

我有viewPager2和FragmentStateAdapter,还有Fragement1,2,3 4,我在fragment2,想去掉fragment3,在fragment2后显示fragment4。问题是它总是向我显示 fragment3(data),调试显示 fragment3 已被删除,但显示的页面仍然有 fragment3 内容。

适配器:

class TipsAdapter(
private val items: MutableList<TripPage>,
context: FragmentActivity
) : FragmentStateAdapter(context) {

private val fragmentFactory = context.supportFragmentManager.fragmentFactory
private val classLoader = context.classLoader

override fun getItemCount(): Int = items.size

override fun createFragment(position: Int): Fragment {
    val pageInfo = items[position]
    val fragment = fragmentFactory.instantiate(classLoader, pageInfo.fragmentClass.name)
    fragment.arguments = Bundle().also { it.putParcelable(PAGE_INFO, pageInfo) }
    return fragment
}

fun getFragmentName(position: Int) = items[position].fragmentClass.simpleName

fun removeFragment(position: Int) {
    items.removeAt(position)
    notifyItemRemoved(position)
    notifyItemRangeChanged(position, items.size)
    notifyDataSetChanged()
}
Run Code Online (Sandbox Code Playgroud)

}

删除片段代码:

      if ((view_pager.adapter …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager fragmentstatepageradapter android-viewpager2

23
推荐指数
1
解决办法
7360
查看次数

ViewPager2 具有不同的项目高度和 WRAP_CONTENT

有一些关于让 ViewPager 使用不同高度的项目的帖子,这些项目以扩展ViewPager自身为中心,以修改其onMeasure以支持这一点。

然而,鉴于它ViewPager2被标记为 final 类,扩展它不是我们可以做的事情。

有谁知道是否有办法解决这个问题?


例如,假设我有两种观点:

视图 1 = 200dp

视图 2 = 300dp

当 ViewPager2 (layout_height="wrap_content" ) 加载时——查看 View1,它的高度将为 200dp。

但是当我滚动到View2时,高度仍然是200dp;View2 的最后 100dp 被截断。

android android-viewpager2

21
推荐指数
6
解决办法
1万
查看次数

以编程方式滑动时更改 ViewPager2 滚动速度

我知道有办法改变ViewPager编程幻灯片的动画持续时间(这里)。

但它不工作 ViewPager2

我试过这个:

try {
        final Field scrollerField = ViewPager2.class.getDeclaredField("mScroller");
        scrollerField.setAccessible(true);
        final ResizeViewPagerScroller scroller = new ResizeViewPagerScroller(getContext());
        scrollerField.set(mViewPager, scroller);
    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

IDE 给我关于“mScroller”的警告:

无法解析字段“mScroller”

如果我们运行此代码将无法工作并在下面给我们错误:

No field mScroller in class Landroidx/viewpager2/widget/ViewPager2; (declaration of 'androidx.viewpager2.widget.ViewPager2' appears in /data/app/{packagename}-RWJhF9Gydojax8zFyFwFXg==/base.apk)
Run Code Online (Sandbox Code Playgroud)

那么我们如何才能实现这个功能呢?

android androidx android-viewpager2

20
推荐指数
2
解决办法
6729
查看次数

Android ViewPager2 setPageMargin 未解决

我想使用View Pager2左右页面的预览来实现 Carousel ,如下所示:

在此处输入图片说明

最初我使用的是支持的视图 pager1。现在我认为它被删除了

    viewPagerhost.setPageMargin(20);
Run Code Online (Sandbox Code Playgroud)

知道我们如何使用 View Pager 2 实现这一点

android carousel android-viewpager2

19
推荐指数
2
解决办法
1万
查看次数

如何在Android中将TabLayout与ViewPager2一起使用

我想将com.google.android.material.tabs.TabLayout组件与Android的新ViewPager实现一起使用androidx.viewpager2.widget.ViewPager2。但是,setupWithViewPager(..)提供的方法TabLayout仅支持旧的ViewPager实现。有没有一种方法可以轻松地将a绑定TabLayoutViewPager2组件?

android android-tablayout androidx android-viewpager2

18
推荐指数
7
解决办法
6100
查看次数

移除 ViewPager2 Overscroll 动画

找不到删除 ViewPager2 过度滚动阴影动画的方法。我知道在 ViewPager 上,您可以直接将 overscrollMode 属性设置为 never,但是,它不适用于 ViewPager2

已经尝试了以下

<androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
    android:layout_height="match_parent"
        android:overScrollMode="never"/>
Run Code Online (Sandbox Code Playgroud)
binding.viewPager.apply {
        adapter = adapter
        orientation = ViewPager2.ORIENTATION_VERTICAL
        overScrollMode = ViewPager2.OVER_SCROLL_NEVER
        offscreenPageLimit = if (containsVideo) 2 else 5
}
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewpager2

14
推荐指数
2
解决办法
3757
查看次数

ViewPager2:setOnTouchListener() 不调用

我正在将我的 ViewPager 迁移到新的 ViewPager2。不幸的是,对于这个新类,setOnTouchListener从未调用过。

mViewPager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                LogUtils.LOGD("XXXX", "motionEvent.getAction()=" + motionEvent.getAction());
                ...
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

你知道我该如何解决吗?

非常感谢你们!

android android-viewpager android-viewpager2

14
推荐指数
1
解决办法
1346
查看次数

如何将 Android ViewPager2 的高度包装到当前项目的高度?

这个问题是针对新的ViewPager2类的。

旧的 ViewPager有一个类似的问题,但解决方案需要扩展ViewPager。但是,ViewPager2 是最终版本,因此无法扩展。

在我的情况下,我有一个包含三个不同片段的 ViewPager2。其中一个片段比其他两个片段高得多,这意味着当您滑动到较短的片段之一时,会有很多空白空间。那么如何有效地将 ViewPager2 包裹到当前片段的高度呢?

android android-fragments android-viewpager android-viewpager2

14
推荐指数
3
解决办法
6871
查看次数

BottomSheet + ViewPager2 拖动隐藏不起作用

我遇到了麻烦,我认为是我CoordinatorLayout的错,但不确定。我ViewPager2在 a 内部使用ConstraintLayout,我使用CoordinatorLayoutlike BottomSheet。但是当我拖动以隐藏它时效果不佳。我替换了ViewPager2byViewPager并且效果很好。我希望你能帮助我。

这是我的 XML 文件:

    <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_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/bottom_sheet_behavior"
        app:behavior_hideable="false"
        app:behavior_peekHeight="60dp" >

        <androidx.viewpager2.widget.ViewPager2
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintDimensionRatio="4:3"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:background="#0000FF"/>
    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-coordinatorlayout bottom-sheet android-viewpager2

13
推荐指数
1
解决办法
541
查看次数