📜  如何在 Android 中禁用 RecyclerView 滚动?

📅  最后修改于: 2022-05-13 01:55:25.848000             🧑  作者: Mango

如何在 Android 中禁用 RecyclerView 滚动?

RecyclerView 是一个视图组,用于显示来自数组和数据库的数据。 RecyclerView 基本上是数据中的项目列表。 RecyclerView 通常被称为 GridView 和 ListView 的继承者。更多关于 RecyclerView 的信息可以在 Android 中的 RecyclerView 中找到。 RecyclerView 允许用户通过属性设置适当的方向来上下左右滚动。我们今天使用的大多数应用程序都使用 RecyclerView 来显示或呈现数据。

RecyclerView 示例

通过本文,我们想向您展示如何在 Android 中禁用 RecyclerView 的滚动功能。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。

步骤 2:使用 activity_main.xml 文件



导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。在布局中创建这个简单的 RecyclerView。

XML


  
    
  


XML


  
    
  


Kotlin
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
  
private val myItemList = arrayListOf("Delhi", "Mumbai", "Hyderabad", "Bangalore", "Chennai", "Kolkata")
  
class MyRecyclerViewAdapter: RecyclerView.Adapter() {
  
    inner class ViewHolder(v: View): RecyclerView.ViewHolder(v), View.OnClickListener{
        val tvPlaceName: TextView = v.findViewById(R.id.place_name)
        override fun onClick(v: View?) {
            TODO()
        }
    }
  
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
        return ViewHolder(LayoutInflater.from(parent.context)
            .inflate(R.layout.card, parent, false))
    }
  
    override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
        holder.tvPlaceName.text = myItemList[position]
    }
  
    override fun getItemCount(): Int {
        return myItemList.size
    }
}


Kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring the recycler view from the layout file
        val myRecyclerView = findViewById(R.id.recycler_view_1)
  
        // Declaring a variable for 
        // Initializing Linear Layout Manager
        val myLinearLayoutManager = LinearLayoutManager(this)
  
        // Setting the layout manager of the
        // recycler view with the Initialized variable
        myRecyclerView.layoutManager = myLinearLayoutManager
  
        // Setting the adapter of the recycler view
        // with the adapter we created
        myRecyclerView.adapter = MyRecyclerViewAdapter()
  
    }
}


Kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val myRecyclerView = findViewById(R.id.recycler_view_1)
  
        // Calling the override functions from 
        // the Linear Layout Manager inner class
        val myLinearLayoutManager = object : LinearLayoutManager(this) {
            override fun canScrollVertically(): Boolean {
                return false
            }
        }
        myRecyclerView.layoutManager = myLinearLayoutManager
        myRecyclerView.adapter = MyRecyclerViewAdapter()
    }
}


第 3 步:为 RecyclerView 创建卡片 (card.xml)

我们需要创建一个布局来显示我们的数据。在我们的例子中,我们有一个城市列表。所以每张这样的卡片都会在 TextView 中显示城市名称。

XML



  
    
  

第 4 步:为 RecyclerView 创建一个适配器(MyRecyclerViewAdapter.kt)

我们必须创建一个适配器来将数据(城市名称数组)传递给 RecyclerView。

科特林



import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
  
private val myItemList = arrayListOf("Delhi", "Mumbai", "Hyderabad", "Bangalore", "Chennai", "Kolkata")
  
class MyRecyclerViewAdapter: RecyclerView.Adapter() {
  
    inner class ViewHolder(v: View): RecyclerView.ViewHolder(v), View.OnClickListener{
        val tvPlaceName: TextView = v.findViewById(R.id.place_name)
        override fun onClick(v: View?) {
            TODO()
        }
    }
  
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
        return ViewHolder(LayoutInflater.from(parent.context)
            .inflate(R.layout.card, parent, false))
    }
  
    override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
        holder.tvPlaceName.text = myItemList[position]
    }
  
    override fun getItemCount(): Int {
        return myItemList.size
    }
}

第五步:在主代码(MainActivity.kt)中链接RecyclerView和Adapter

请参阅代码中的注释。

科特林

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring the recycler view from the layout file
        val myRecyclerView = findViewById(R.id.recycler_view_1)
  
        // Declaring a variable for 
        // Initializing Linear Layout Manager
        val myLinearLayoutManager = LinearLayoutManager(this)
  
        // Setting the layout manager of the
        // recycler view with the Initialized variable
        myRecyclerView.layoutManager = myLinearLayoutManager
  
        // Setting the adapter of the recycler view
        // with the adapter we created
        myRecyclerView.adapter = MyRecyclerViewAdapter()
  
    }
}

输出:运行应用程序

您可以看到我们可以滚动。

第 6 步:编辑布局管理器以禁用 RecyclerView 滚动

科特林

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val myRecyclerView = findViewById(R.id.recycler_view_1)
  
        // Calling the override functions from 
        // the Linear Layout Manager inner class
        val myLinearLayoutManager = object : LinearLayoutManager(this) {
            override fun canScrollVertically(): Boolean {
                return false
            }
        }
        myRecyclerView.layoutManager = myLinearLayoutManager
        myRecyclerView.adapter = MyRecyclerViewAdapter()
    }
}

输出:现在运行应用程序

现在,您可以看到我们无法滚动。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!