- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个小型 Android 模块,我正面临一个也许有人可以解决的问题。我需要创建一个日历并允许用户通过以下方式选择日期范围:1) 单击开始日期(这将默认创建一个 2 天的范围),然后 2) 触摸一个范围边框并拖动它以增加或减小该范围。
目前,我使用带有 GridLayoutManager 的 RecyclerView 创建了所有日历天单元格,它有很多行(所有周),每行 7 个项目(天)。然后,我使用了 RecyclerView ItemTouchHelper ( https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.html ) 和 ItemTouchHelper.Callback ( https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html ) 完成拖放功能。我的方法是使用那些助手提供的拖放检测(看看 https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.ib8r012gc )修改它以避免移动一个项目并且只检测我想要的触摸+拖放手势。我已经通过删除默认拖动动画(覆盖 ItemTouchHelper onDraw/onDrawOver)并使用 ItemTouchHelper.Callback 回调来管理拖动运动(无需交换适配器项目,因为我需要它们始终处于同一位置)正确地完成了该功能。一切正常,但我现在遇到了一个问题,因为拖动检测没有按预期工作。我将尝试解释它:如果我在给定单元格的中心开始拖动运动,然后移动到其左侧的单元格,则在我到达中心之前不会触发拖动运动(与我开始拖动移动的位置相同)左侧单元格。这是一个问题,因为我需要在到达另一个单元格后立即检测到拖动(如果手指在新单元格边界内,则应触发拖动)。另一个例子是:如果我从一个单元格的最左边开始拖动运动,直到我到达另一个单元格的最左边时才会触发拖动。
现在我正在尝试使用 ItemTouchHelper.Callback.chooseDropTarget 方法,以便在手指进入新单元格后立即手动选择放置目标,但我无法获得这行得通。我认为(但我不能确定)接收到的 x,y 坐标有些奇怪。
我知道一些代码示例会很有帮助,但我无法粘贴它,因为它属于一个私有(private)且 protected 存储库:(
非常感谢任何人可以提供给我的帮助。而且,当然,我会尝试暂挂此主题以提供我能提供的所有信息。我还将考虑新的不同方法和建议以获得“触摸+移动+向上”移动,我需要移动范围边界:)
非常感谢所有 Stack Overflow 社区!
最佳答案
经过更多研究,我找到了解决问题的方法。我会发布它,这样如果有人遇到同样的问题,他可以在这里找到一些帮助:)
我的问题是我正在使用 ItemTouchHelper.Callback.chooseDropTarget
( https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.Callback.html#chooseDropTarget(android.support.v7.widget.RecyclerView.ViewHolder,%20java.util.List%3Candroid.support.v7.widget.RecyclerView.ViewHolder%3E,%20int,%20int) ) 返回的 curX
和 curY
参数,就好像它们是拖动时的当前手指坐标,但在应用任何平移后它们是拖动 View 最左上角的坐标。现在我觉得有点傻。我应该更好地阅读文档:|
因为我不需要最左上角的坐标而是手指的位置,所以我的解决方案是使用附加到源 View 的触摸监听器,这样我就可以使用touchSrcX = MotionEvent.getX()
和 touchSrcY = MotionEvent.getY()
方法,然后我在 chooseDropTarget
中选择目标之前应用了点转换> 回调。我的意思是,类似于:
curX += touchSrcX
curY += touchSrcY
如果有人需要更多详细信息或更好的解释,请与我联系,我很乐意提供帮助! :)
关于Android - 使用 ItemTouchHelper.Callback 拖动 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045445/
我已经成功地实现了滑动行为并用它执行了一些操作。我现在遇到的问题是我想在滑动项目时限制滑动宽度。 目前是这样的 但我想将滑动行为宽度限制到这里 这是我到目前为止所做的:- private void s
我无法理解当我刷卡项目时调用 ItemTouchHelper 的哪个回调方法,但我没有完成刷卡而是将其转回正常状态。 我目前拥有的: @Override public void onSwi
我有这个 RecyclerView,它有一个 viewholder,它有一个 title/TextView 和一个 ViewPager。 RecyclerView 中的项目可以用 ItemTouchH
我正在使用 ItemTouchHelper 和 ItemTouchHelper.SimpleCallback 来允许用户重新排序垂直列表 Recycler View。 拖放有效,但在第一条跳线之后强制
我需要根据滑动方向更改行项目的背景颜色,如果向右滑动则将颜色更改为绿色,如果向左滑动则将颜色更改为红色。 但我发现很难获得滑动的方向。 这是我的代码。 public class SimpleItemT
我正在尝试将 RecyclerView 与 ItemTouchHelper 一起用于基本的“拖放”和“滑动关闭”实现。滑动工作正常,项目在适配器中正确删除,动画正确,但“拖放”行为非常奇怪。长按后 V
所以我在 recyclerview rv 上实现了这个 itemtouchhelper.simple 回调。 现在在这个 rv 中,我根据内容类型将 2 种布局设置为一行。 所以当我在 rv 上设置这
我有一个使用 recyclerview 来显示数据库项目的应用程序。我想通过使用 itemtouchhelper 拖动来重新排列项目。我想出了如何做到这一点,但我不知道如何更新我的房间数据库。 Ite
我正在尝试为列表中的每个项目实现一个具有不同 ItemTouchHelper 的 Recycleview。 我知道的唯一方法是将 ItemTouchHelper 直接添加到 RecycleView 而
使用 itemTouchHelper onMove 方法时。如何根据列表中的位置使用编号列表。 例如,项目1,项目2,项目3等都是基于项目在列表中的实际位置。如何通过向上或向下拖动来移动项目。更新列表
我正在使用 android studios ItemTouchHelper.SimpleCallback 来刷项目,我希望项目在长时间保持时被刷,有没有办法以编程方式刷项目?我怎样才能实现这个功能?
使用 ItemTouchHelper 从适配器中删除项目时遇到问题。当通过 updateItemRemoved() 滑动并删除第一个项目时,无法滑动任何其他项目。看起来在第一次移除任何项目后,“忽略”
当我们从末端滑动时,我可以显示红色背景和删除图标。我正在尝试实现部分滑动功能,在部分滑动时,滑动在删除图标之前停止。我尝试关注这些 solutions .但是,它对我不起作用。请指出我正确的方向。 p
我需要在开始时滑动一个项目,或者完全滑动,或者在当前点停止。就像在 Yandex 邮件中一样。我本来想做 setLeft(dx) 和 setRight(dx) 但这不是我需要的 我有课 ItemTou
我创建了一个类来处理滑动事件: public class CardViewSwipeListener : ItemTouchHelper.Callback { private Context c
我正在尝试在回收站 View 中实现滑动删除。我有这个代码。 public abstract class SwipeToDeleteCallback extends ItemTouchHelper.C
我已经实现了滑动以关闭到我的回收站 View 中。它触发 2 个功能(记录的编辑和删除)。如果向左滑动,则编辑它,如果向右滑动,则删除它。我在recyclerview项目的一般部分下有这样的布局
我使用带有 ItemTouchHelper 的 RecyclerView 进行滑动删除,并在滑动项下添加删除按钮,如下所示: 但是当我刷完后,该项目很快就会从列表中删除!如何锁定滑动的项目,并通过单击
当用户停止在我的 RecyclerView 上拖放时(当他放下所选项目时),我需要倾听用户的声音。 我可以通过我的 ItemTouchHelper 获得这些信息吗? 感谢帮助 马克:目前我只是在用户仍
我有一个滑动删除,它绘制背景(很像收件箱应用程序),由 ItemTouchHelper 实现 - 通过覆盖 onChilDraw 方法并在提供的 Canvas 上绘制一个矩形: ItemTou
我是一名优秀的程序员,十分优秀!