RecyclerView Swipe-To-Dismiss奇怪的行为

时间:2015-02-08 19:15:38

标签: java android ontouchlistener android-recyclerview swipe-gesture

当我尝试在RecyclerView中滑动以关闭项目时,项目装饰线仍然保留在屏幕上(可以在我提供的gif动画上看到:http://imgur.com/v1D149C)。

因此,当我尝试刷出recyclerView项时,警告对话框会显示一条消息,询问我是否要删除该项。只要我点击"确定",项目就会正常删除。但是,如果我点击"取消",会发生一些奇怪的事情,之后每当我删除列表中的任何项目时,屏幕上都会出现与项目装饰线的一些差距,我不知道该怎么做用它。 我希望有人可以提供帮助,或者至少说在哪里寻找解决方案,因为我完全搞砸了。

我已经使用了这个RecyclerView Swipe-to-Dosmiss TouchListener: https://github.com/krossovochkin/Android-SwipeToDismiss-RecyclerView/blob/master/app/src/main/java/com/example/android/swipedismiss/SwipeDismissRecyclerViewTouchListener.java

以下是我在我的应用中使用的代码:http://pastebin.com/pkiLBRzr 更改位于private boolean handleTouchEvent(MotionEvent motionEvent)方法的172到280行之间(case MotionEvent.ACTION_UP:)。

另外,我将其用作ItemDecoration:https://gist.github.com/polbins/e37206fbc444207c0e92
这是我的MainActivity:http://pastebin.com/AUdLCHjs

1 个答案:

答案 0 :(得分:0)

根据我的理解,您的Swipe-to-Dismiss的实现可以正常工作。在我看来,问题是分隔符是容器中,该容器包含要刷出的视图。也许如果你在视图中定义一个的分隔符,你可以获得你想要的视觉效果。

例如,在您发布的XML文件中,最后定义了一个形状:

`-------------Item Decoration Divider XML---------
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
    <size
       android:width="1dp"
       android:height="1dp"/>
    <solid android:color="@color/divider" />
</shape>`

您的文件中的那部分似乎是您删除视图时保留的行,我建议您在幻灯片中删除 之前的线条(例如作为他们的推动者)。看看this问题。

尝试设置例如LinearLayout的android:divider="?android:dividerHorizontal"属性或 {/ 1}}在您的文字视图中。