如何在 Android 中禁用 RecyclerView 滚动?
RecyclerView 是一个视图组,用于显示来自数组和数据库的数据。 RecyclerView 基本上是数据中的项目列表。 RecyclerView 通常被称为 GridView 和 ListView 的继承者。更多关于 RecyclerView 的信息可以在 Android 中的 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()
}
}
输出:现在运行应用程序
现在,您可以看到我们无法滚动。