标签: android-viewpager2

安卓。如何使用 Paging 3 从特定位置加载分页数据?

我用于paging3在 中显示无尽的列表RecyclerView。当我单击特定项目时,我需要显示详细信息片段。详细信息片段包含一个视图分页器,其适配器也是PagingDataAdapter。也就是说,具有详细信息的片段应该显示我在上一屏幕上选择的元素,并且还可以水平滚动到也逐页加载的其他元素。问题是我无法从某个位置开始在视图寻呼机中显示分页列表。该列表始​​终从头开始显示。我找不到这个问题的解决方案。是否可以从特定位置开始监听页面源(RemoteMediator)的数据?请帮我:(

android android-view android-recyclerview android-viewpager2 android-paging-3

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

AppBarLayout 具有滚动行为替代/滚动时粘性视图/大高度 AppBarLayout 导致奇怪的滚动

我当前状态的视频,以便更好地了解我的情况:
\n视频
\RecyclerView 上面的所有内容都在 AppbarLayout 内

\n

具有类似行为的 Reddit 应用示例:
\n视频

\n

目标:
\n1-实现滚动屏幕,视图按从上到下的顺序排列

\n
a)[several views that need to scroll top until gone, their combined height is several screen sizes]  \nb)[view that scrolls until it reaches screen top and then sticks there]  \nc)[Recy\xd1\x81lerView that scrolls beneath view that sticks on screens top] or [ViewPager with fragments containing RecyclerViews]\n
Run Code Online (Sandbox Code Playgroud)\n

RecyclerView2-需要它与并ViewPager包含fragments包含一起工作RecyclerViews

\n

3-保留RecyclerViews回收。

\n

到目前为止我的解决方案:

\n

协调器布局,AppBarLayout 与appbar_scrolling_view_behaviorscroll|exitUntilCollapsed。 …

android android-recyclerview android-coordinatorlayout android-appbarlayout android-viewpager2

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

如何在 ViewPager2 中禁用特定方向的滑动

我想禁用从右向左滑动ViewPager2。我的导航抽屉里基本上有一个带有 2 页的 viewpager2 元素。我希望我的第二页仅在我单击第一页中的某个元素时显示(从第一页从右向左滑动不应打开第二页),而当我在第二页时,viewpager2 滑动(向左滑动)向右滑动)应该像在 viewpager 中那样滑动。

我尝试扩展ViewPager2类并覆盖触摸事件,但不幸的ViewPager2是它是最终类,因此我无法扩展它。

其次,我尝试使用setUserInputEnabledfalse 方法,但这完全禁用了所有滑动(我只想禁用从右向左滑动)。如果我能找到一些在滑动之前检查当前页面并禁用滑动的侦听器,它可能会起作用。

     implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha05'
Run Code Online (Sandbox Code Playgroud)

设置 ViewPager2 的代码

      ViewPager2 pager = view.findViewById(R.id.pager);
      ArrayList<Fragment> abc = new ArrayList<>();
      abc.add(first);
      abc.add(second);
      navigationDrawerPager.setAdapter(new DrawerPagerAdapter(
                this, drawerFragmentList));
      pager.setAdapter(new FragmentStateAdapter(this), abc);
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewpager2

5
推荐指数
1
解决办法
4909
查看次数

ViewPager2 - PagerTitleStrip 有替代品吗?

是否可以创建类似于 ViewPager 中存在的 PagerTitleStrip 的内容?我的目的是只显示没有 tabLayout 的片段的标题。

android android-viewpager android-viewpager2

5
推荐指数
0
解决办法
215
查看次数

FragmentStateAdapter 抛出 java.lang.IllegalStateException:配置更改后违反设计假设

FragmentStateAdapter 抛出

java.lang.IllegalStateException:违反了设计假设,

当设备旋转时。我该如何解决这个问题?

private inner class PagerAdapter : FragmentStateAdapter(this) {
        private val ids = LongSparseArray<Media>()

        override fun getItemCount(): Int = adapter.itemCount

        override fun getItemId(position: Int): Long {
            return adapter.source!![position].time
        }

        override fun containsItem(itemId: Long): Boolean {
            return ids[itemId] != null
        }
    }
Run Code Online (Sandbox Code Playgroud)

例外

private inner class PagerAdapter : FragmentStateAdapter(this) {
        private val ids = LongSparseArray<Media>()

        override fun getItemCount(): Int = adapter.itemCount

        override fun getItemId(position: Int): Long {
            return adapter.source!![position].time
        }

        override fun containsItem(itemId: Long): Boolean {
            return ids[itemId] != …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-gradle-plugin android-viewpager2

5
推荐指数
1
解决办法
1170
查看次数

ViewPager2 里面有水平滚动视图

我为我的项目实现了新的 ViewPager。viewPager2 包含一个片段列表

 private class ViewPagerAdapter extends FragmentStateAdapter {

    private ArrayList<Integer> classifiedIds;

    ViewPagerAdapter(@NonNull Fragment fragment, final ArrayList<Integer> classifiedIds) {
        super(fragment);
        this.classifiedIds = classifiedIds;
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return DetailsFragment.newInstance(classifiedIds.get(position));
    }

    @Override
    public int getItemCount() {
        return classifiedIds.size();
    }
}
Run Code Online (Sandbox Code Playgroud)

在片段内部我得到了一个水平的 recyclerView

LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerViewPicture.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试滚动 recyclerview 时,viewPager 触摸并切换到下一个片段

当我使用旧的 ViewPager 时,我没有这个问题

android android-recyclerview android-touch-event android-viewpager2

5
推荐指数
2
解决办法
7084
查看次数

在 viewpager2 中禁用动画

我为他提供了扩展 FragmentStateAdapter 的 viewpager2 和适配器。我希望用户仅通过单击 tablayout 才能转到另一个页面。我已禁用此 viewpager2 的用户输入。但是当我点击选项卡时,页面之间有快速滑动的动画。但我只想显示新片段。与 FragmentTransaction 类似,但使用 viewpager2 和 tablayout。有谁知道怎么做?

android kotlin android-tablayout android-viewpager2

5
推荐指数
2
解决办法
4513
查看次数

ViewPager2 - 如何使用 registerOnPageChangeCallback 检查视图分页器项目位置

如何使用 ViewPager2 的registerOnPageChangeCallback功能来检查当前可见的 ViewPAger2 片段的位置?if我知道这将由/语句组成when,但不知道实现它的正确方法。

mViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                if (mViewPager.currentPage) == 0 {
                // do something
                }
                else if (mViewPager.currentPage) == 1 {
                // do something
                }
                else {
                // do something
                }
                super.onPageSelected(position)
            }
        })
Run Code Online (Sandbox Code Playgroud)

android android-viewpager kotlin android-viewpager2

5
推荐指数
2
解决办法
5704
查看次数

E/iardini.error0: 无效 ID 0x00000001 - 错误资源 ID

我目前遇到一个错误,该错误继续降低我的应用程序的性能。

该错误不会导致应用程序关闭或崩溃,或者向控制台写入异常。控制台只是简单地报告这个消息:

E/iardini.error0: Invalid ID 0x00000001.

从消息中出现的唯一内容是:

  • 这是一个错误,你可以从前缀“E/”中理解
  • 错误在我的应用程序中,“iardini.error0”
  • 无法识别某种 ID

如何复制错误:我在 github 上创建了一个公共存储库,因此您可以下载源代码并享用午餐!您将立即看到错误将显示在控制台内。

在此处输入图片说明

错误消息取决于什么?我该如何解决?

提前致谢!

android android-resources android-tablayout android-databinding android-viewpager2

5
推荐指数
1
解决办法
1564
查看次数

禁用其他子片段的视图寻呼机滑动

我正在处理ViewPager2我在 viewpager 中有 2 个片段的地方。它工作得很好,但有一个问题,我希望它只是从FragmentTwo滑动到FragmentOne片段,因为它现在正在工作。但是当我将它从FragmentOne滑动到FragmentTwo 时,它将只能从FragmentOne片段的 FirstFragment 子片段滑动。

我的项目图片, 图片

在此图像中 MainActivity 是放置 viewpager2 的基本活动。它包含 2 个片段,FragmentOne 和 FragmentTwo。FragmentOne 有一个自定义的 viewpager2 用于BottomNavigationView. 它有 3 个片段,第一个是 HomeFragment,这个片段有一个按钮,两个交易到 FragmentTwo。所以我只希望刷卡交易只能从 HomeFragment 发生,而不是从它的孩子或其他两个片段发生。就像 Instagram 一样,我们只能从 HomeFragment 滑动到 ChatFragment。

已编辑

ViewPagerMainActivity 中的代码

  override fun onCreate(savedInstanceState: Bundle?) {
    val mViewPager = findViewById<ViewPager2>(R.id.view_pager_main_activity)
        mViewPager?.offscreenPageLimit = 2
        mViewPager?.apply { // to disable overScrollAnimation
           (getChildAt(0) as? RecyclerView)?.overScrollMode = RecyclerView.OVER_SCROLL_NEVER
        }
  }


internal class MyViewPagerAdapter(fragmentActivity: …
Run Code Online (Sandbox Code Playgroud)

android android-fragments instagram kotlin android-viewpager2

5
推荐指数
1
解决办法
248
查看次数