【问题标题】:Having trouble setting up drag listener | Kotlin | Android Studio设置拖动监听器时遇到问题 |科特林 |安卓工作室
【发布时间】:2021-09-08 18:32:37
【问题描述】:

我一直在寻找可以在拖动侦听器上找到的任何内容,但我发现的只是 android studio 指南,这让我更加困惑。

我正试图让它工作dashboard.setOnDragListener() (仪表板只是一个卡片视图),但我对它需要的参数感到困惑,我得到的错误是:No value passed for parameter ‘l’

我认为文档中提到了另外 2 个参数,但我迷路了

如果我能得到比从文档中得到的更好的帮助,我会是一个快乐的人

MainActivity.kt:

var dashboard = findViewById<View>(R.id.dashboard)

【问题讨论】:

    标签: android android-studio kotlin


    【解决方案1】:

    请记住,接收拖放的目标视图会获取拖动侦听器。将被拖动的视图会调用 startDragAndDrop。

    这是我的样子:

    inner class MyDragListener(): View.OnDragListener {
            override fun onDrag(view: View?, dragEvent: DragEvent?): Boolean {
    
                //you might also want to use this if to distinguish between different views that might be dragged
                if (dragEvent!!.action==DragEvent.ACTION_DROP)
                {
                    //do stuff here
                    return true
                }
    
        }
    
    

    然后对于被拖动的视图,像这样注册它们以进行拖动操作。

    dragableView.setOnLongClickListener({
                    //here you could add some effects for 
                    //hinting to the user that something is being dragged.
                    //I like to use a vibrator and toggle the visibility  
                    //of something else on the screen
                    val dbs= View.DragShadowBuilder(it)
                    var clipData= ClipData.newPlainText("","")
                    it.startDragAndDrop(clipData,dbs,it,0)
                })
    
    

    哦,对了,我差点忘了。将您的 Draglistener 传递给目标。

    dashboard.setOnDragListener(MyDragListener())
    

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 2019-10-17
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多