如何在Recyclerview Android中以两种颜色滑动以删除和滑动以存档 [英] How to have swipe to delete and swipe to archive in two colours in Recyclerview Android

查看:100
本文介绍了如何在Recyclerview Android中以两种颜色滑动以删除和滑动以存档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在,我有一个向左滑动的功能,可以在recyclerview中使用两种布局(前景和背景)删除.我在代码中使用itemtouchhelper.但是,我想同时向左滑动和向右滑动,以显示不同的颜色和图标,就像在Google收件箱中一样.我该如何实施?

Right now I have a funtional swipe left to delete in recyclerview with two layouts(foreground and background). I use itemtouchhelper in the code. However, I would like to have BOTH swipe left and swipe right showing different colors and icons, like in Google Inbox. How can I implement that?

我想要的是: 向右滑动 我所拥有的是: 仅向右滑动

代码只是xml中具有2种布局的标准itemtouchhelper.simplecallback.而且我到处搜寻Google,只找到带有单一图标和单一颜色的单一滑动选项

the code is just the standard itemtouchhelper.simplecallback with 2 layouts in the xml. And I googled everywhere and only found single swipe option with single icon and single color

推荐答案

使用 ItemTouchHelper 实施Gmail赞功能

Use ItemTouchHelper to Implement the Gmail Like Feature

设置recyclerView后调用以下功能

call the following function after setting the recyclerView

private fun initSwipe() {
        val simpleItemTouchCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {

            override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
                return false
            }

            override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
                val position = viewHolder.adapterPosition

                if (direction == ItemTouchHelper.LEFT) {

                   //Logic to do when swipe left

                } else {

                  //Logic to do when swipe right

                }
            }

            override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {


                val icon: Bitmap
                if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {


       //Drawing for Swife Right    

                    val itemView = viewHolder.itemView
                    val height = itemView.bottom.toFloat() - itemView.top.toFloat()
                    val width = height / 3
                    if (dX > 0) {
                        p.color = Color.parseColor("#2F2FD3")
                        val background = RectF(itemView.left.toFloat(), itemView.top.toFloat(), dX, itemView.bottom.toFloat())
                        c.drawRect(background, p)
                        icon = BitmapFactory.decodeResource(resources, R.drawable.ic_archive)
                        val icon_dest = RectF(itemView.left.toFloat() + width, itemView.top.toFloat() + width, itemView.left.toFloat() + 2 * width, itemView.bottom.toFloat() - width)
                        c.drawBitmap(icon, null, icon_dest, p)
                    } else {

       //Drawing for Swife Left


                        p.color = Color.parseColor("#D32F2F")
                        val background = RectF(itemView.right.toFloat() + dX, itemView.top.toFloat(), itemView.right.toFloat(), itemView.bottom.toFloat())
                        c.drawRect(background, p)
                        icon = BitmapFactory.decodeResource(resources, R.drawable.ic_delete)
                        val icon_dest = RectF(itemView.right.toFloat() - 2 * width, itemView.top.toFloat() + width, itemView.right.toFloat() - width, itemView.bottom.toFloat() - width)
                        c.drawBitmap(icon, null, icon_dest, p)
                    }
                }
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
            }
        }
        val itemTouchHelper = ItemTouchHelper(simpleItemTouchCallback)
        itemTouchHelper.attachToRecyclerView(YOUR_RECYCLER_VIEW)
    }

哪里 对象p是绘画Paint p = new Paint()的对象 希望对您有帮助.

Where Object p is an object of paint Paint p = new Paint() Hope this may help you.

这篇关于如何在Recyclerview Android中以两种颜色滑动以删除和滑动以存档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆