以下是一个示例代码,演示了如何使用嵌套的RecyclerView和NestedScrollView,并在RecyclerView上设置OnTouchListener来禁止上下滑动:

import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.widget.NestedScrollView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class MainActivity : AppCompatActivity() {

    private lateinit var nestedScrollView: NestedScrollView
    private lateinit var recyclerView: RecyclerView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        nestedScrollView = findViewById(R.id.nestedScrollView)
        recyclerView = findViewById(R.id.recyclerView)

        // 设置NestedScrollView的嵌套滚动模式
        nestedScrollView.isNestedScrollingEnabled = true

        // 创建和设置RecyclerView的适配器
        val adapter = MyAdapter()
        recyclerView.adapter = adapter
        recyclerView.layoutManager = LinearLayoutManager(this)

        // 设置RecyclerView的OnTouchListener来禁止上下滑动
        recyclerView.setOnTouchListener(object : View.OnTouchListener {
            override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                when (event?.action) {
                    MotionEvent.ACTION_MOVE -> return true // 禁止滑动
                }
                return false
            }
        })
    }
}

class MyAdapter : RecyclerView.Adapter<MyViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
        return MyViewHolder(view)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        // 绑定数据
    }

    override fun getItemCount(): Int {
        return 10
    }
}

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    // ViewHolder代码
}

在上面的代码中,我们在Activity的布局文件中包含了一个NestedScrollView和一个RecyclerView。我们使用LinearLayoutManager来设置RecyclerView的布局管理器,并设置RecyclerView的适配器。

然后,我们在RecyclerView上设置了一个OnTouchListener,当用户滑动RecyclerView时,我们检测到MotionEvent.ACTION_MOVE事件,并返回true,从而禁止了上下滑动。

请注意,代码中的布局文件中的NestedScrollView和RecyclerView的id需要与代码中的id匹配。

Android Kotlin NestedScrollView 嵌套 RecyclerView 禁止上下滑动详细代码

原文地址: http://www.cveoy.top/t/topic/4ua 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录