【问题标题】:How to swipe list view item left in Android?如何在Android中向左滑动列表视图项目?
【发布时间】:2016-05-31 03:30:21
【问题描述】:

我有一个列表视图,我想创建它,以便我可以滑动每个项目以显示删除按钮:

我已经弄清楚如何识别滑动事件,我正在使用此代码(listItem 的类型为 View):

listItem.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            switch (event.getAction()) 
            {
                case MotionEvent.ACTION_DOWN:
                    _xSwipe1 = event.getX();
                    break;

                case MotionEvent.ACTION_UP:
                    _xSwipe2 = event.getX();

                    float deltaX = _xSwipe2 - _xSwipe1;

                    if (deltaX < 0) 
                    {
                        Log.e("SWIPE", "Right to Left swipe");
                    }

                    else if (deltaX >0)
                    {
                        Log.e("SWIPE", "Left to right swipe");
                    }

                    break;
            }

            return false;
        }
    });

当我滑动时,我可以在日志中看到正在识别滑动事件。

但是,我不确定如何物理上使列表项开始向左侧消失?

任何帮助将不胜感激。

【问题讨论】:

  • 只有滑动不起作用?
  • 刷卡事件正在被识别,我只是不知道下一步该怎么做。我实际上如何使列表视图项开始向左拍摄(如果我从右向左滑动)?
  • 究竟是什么问题?你想达到什么目的?
  • 确切的问题是我不知道如何让列表视图项在用户滑动时从右向左移动。

标签: android swipe


【解决方案1】:

如果您知道刷卡发生的时间以及用户刷卡的次数,您可以根据用户刷卡的次数致电View.setTranslationX()。或者,您可以完全放弃滑动检测逻辑并使用只有 2 页的ViewPager。然后,您将覆盖 PagerAdapter 中的 PagerAdapter.getPageWidth(...),以便删除按钮只占用有限的空间。

【讨论】:

  • 谢谢,这绝对是我想要的信息。我尝试setTranslationX(-200) 作为试用版,效果很好。作为后续行动,我怎样才能让它出现第二个按钮?因为当前所做的只是偏移现有按钮的位置?再次感谢您
  • 要使第二个按钮“出现”,您可以将其放在列表项一侧的布局中,列表项宽度与父项匹配。然后,当您将整个布局向左移动时,删除按钮就会出现。老实说,我认为 ViewPager 解决方案在代码方面会更容易,除非你一心想自己实现触摸逻辑。
  • 感谢您的回复。使用您的 ViewPager 想法,这不会影响整个活动吗?或者是否可以让 ListView 成为 ViewPager 的列表?这样每当滑动某个项目时,我只会看到该项目的删除按钮?
  • 你会有一个查看页面的列表视图
猜你喜欢
  • 1970-01-01
  • 2019-06-16
  • 2013-07-05
  • 2013-03-24
  • 2023-03-19
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多