标签: pagersnaphelper

第一个和最后一个项目的 SnapHelper 问题

我正在使用 Recyclerview 和 PageSnapHelper 创建图像轮播。

第一项 - 不居中在此处输入图片说明

第二项居中

第一个项目不居中,后续项目应该居中,我使用项目装饰器实现了这一点。RecyclerView 位于嵌套滚动视图中。

问题: 滚动不流畅,我覆盖了 findTargetSnapPosition,它在第一次滚动时滚动了 2 个项目。

 override fun findTargetSnapPosition(layoutManager: RecyclerView.LayoutManager, velocityX: Int, velocityY: Int): Int {

    if (layoutManager !is RecyclerView.SmoothScroller.ScrollVectorProvider) {
        return RecyclerView.NO_POSITION
    }

    val currentView = findSnapView(layoutManager) ?: return RecyclerView.NO_POSITION

    val layoutManager = layoutManager as LinearLayoutManager

    val position1 = layoutManager.findFirstVisibleItemPosition()
    val position2 = layoutManager.findLastVisibleItemPosition()

    var currentPosition = layoutManager.getPosition(currentView)



    if (velocityX > 500) {
        currentPosition = position2
    } else if (velocityX < 500) {
        currentPosition = position1
    }

    return if (currentPosition …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview pagersnaphelper

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

Flutter:如何在 PageView 中左对齐视图端口

怎么运行的

当我们设置 viewportFraction 时,视图将居中对齐。

如果 viewportFraction 设置

PageView(
   viewportFraction: 0.8
)
Run Code Online (Sandbox Code Playgroud)

中心对齐视口

我多么期待

但我需要的是从左对齐开始的视图,就像 Playstore 仪表板的工作方式一样。

左对齐视口

上面的截图取自 Google Play 商店。

欲了解更多信息

我怎样才能实现这个目标?

在进行编码演练时,我从未找到居中对齐的方法。我刚刚通过复制page_view类创建了一个新的自定义类。

flutter pagersnaphelper flutter-pageview

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

如何在水平RecyclerView中捕捉到LinearSnapHelper的特定位置?

如何在水平 RecyclerView 中捕捉到 LinearSnapHelper() 的特定位置?RecyclerView有一个函数scrolltoposition,它滚动到该位置,但没有将其保持在这个snaphelper的中心。

I am looking for something like below image. So when I set to particular position, it will keep it in center. I dont find anything related to select position for SnapHelper

i find this , but this doesn't help me. Any help would be appreciated.

在此输入图像描述

android kotlin android-recyclerview pagersnaphelper

3
推荐指数
1
解决办法
7473
查看次数

PagerSnapHelper 中的从到页面更改了侦听器

我正在PagerSnapHelper水平使用RecyclerView以实现类似行为的视图寻呼机。

final PagerSnapHelper pagerSnapHelper = new PagerSnapHelper(); pagerSnapHelper.attachToRecyclerView(recyclerView);

它工作得很好,但我希望能够在用户向任一方向更改页面时获得回调。所以像,onSwipeLeft/onSwipeRight回调。

我尝试使用findTargetSnapPositionin PagerSnapHelper,但这只会给我targetIndex而不是当前索引。我尝试过这样的事情,但它并不是一直有效。

@Override
public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY) {
    final int targetPos = super.findTargetSnapPosition(layoutManager, velocityX, velocityY);

    final View currentView = findSnapView(layoutManager);
    final int currentPos = layoutManager.getPosition(currentView);

    if (currentPos < targetPos) {
        callback.onSwipeRight();
    } else if (currentPos > targetPos) {
        callback.onSwipeLeft();
    }

    return targetPos;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标并始终有效?谢谢!

android android-support-library android-recyclerview pagersnaphelper

3
推荐指数
1
解决办法
2627
查看次数

垂直方向的 Recyclerview 在屏幕水平滚动时上下滚动

我需要创建一个包含全屏视频的列表。我使用 PagerSnapHelper 作为全屏子项目。我有一个 Exoplayer 实例并在滚动时更改视频。视频也会在水平滚动时发生变化。

RecyclerView.OnScrollListener() 方法也在水平滚动时调用。

请建议我如何解决这些问题。

  1. RecyclerView 只能垂直滚动。
  2. RecyclerView.OnScrollListener() 不应在水平滚动时调用

1. 滚动监听器

class SnapOnScrollListener(
private val snapHelper: SnapHelper,
var behavior: Behavior = Behavior.NOTIFY_ON_SCROLL,
var onSnapPositionChangeListener: OnSnapPositionChangeListener? = null
) : RecyclerView.OnScrollListener() {

enum class Behavior {
    NOTIFY_ON_SCROLL,
    NOTIFY_ON_SCROLL_STATE_IDLE
}


override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
    System.out.println("dx.. $dx  dy $dy")
    if (behavior == Behavior.NOTIFY_ON_SCROLL) {
        maybeNotifySnapPositionChange(recyclerView)
        System.out.println("dx.. $dx  dy $dy snapChange")
    }
}

override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
    System.out.println("dx......")

    if ( behavior == Behavior.NOTIFY_ON_SCROLL_STATE_IDLE …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-recyclerview pagersnaphelper

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

如何在 RecyclerView 中捕捉到项目的左侧

我有带有水平滚动的 recyclerview,默认情况下它会使用 LinearSnapHelper 或 PagerSnapHelper 捕捉到项目的中心。我想捕捉到每个项目的左侧。是否可以?

android android-recyclerview pagersnaphelper

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