¿Cómo deshabilitar el desplazamiento de GridView en Android?

Un GridView es un ViewGroup que puede mostrar datos de una lista de objetos o bases de datos en una estructura similar a una cuadrícula que consta de filas y columnas. La vista de cuadrícula requiere un adaptador para obtener datos de los recursos. Esta vista se puede desplazar tanto horizontal como verticalmente. La capacidad de desplazamiento de GridView de forma predeterminada está habilitada.

Sin embargo, en este artículo, mostraremos cómo deshabilitar la capacidad de desplazamiento de GridView.

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Demostramos la aplicación en Kotlin , así que asegúrese de seleccionar Kotlin como idioma principal al crear un nuevo proyecto.

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Cree este GridView simple en el diseño.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">
  
    <GridView
        android:id="@+id/gridLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
  
</RelativeLayout>

Paso 3: cree un adaptador para la vista de cuadrícula (MyGridViewAdapter.kt)

Tenemos que crear un adaptador para enviar datos (Imágenes en nuestro caso) a la Vista de cuadrícula. Entonces, cree una nueva clase y asígnele un nombre relevante. Para ver cómo agregamos estas fotos, consulte el Paso 6 .

Kotlin

import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.AbsListView
import android.widget.BaseAdapter
import android.widget.ImageView
  
// Array of Images, 
// we used GeeksforGeeks logo
private val myImages = arrayOf(
    R.drawable.logo,
    R.drawable.logo,
    R.drawable.logo,
    R.drawable.logo,
    R.drawable.logo,
    R.drawable.logo,
    R.drawable.logo,
)
  
class MyGridViewAdapter constructor(c:Context): BaseAdapter() {
    private val context: Context = c
    
    override fun getCount(): Int {
        return myImages.size
    }
      
    override fun getItem(position: Int): Any? {
        return null
    }
      
    override fun getItemId(position: Int): Long {
        return 0
    }
      
    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val imageView: ImageView
        
        if (convertView == null) {
            imageView = ImageView(context)
            imageView.layoutParams = AbsListView.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
            )
            imageView.scaleType = ImageView.ScaleType.CENTER_CROP
            imageView.setPadding(30, 30, 30, 30)
        }
        else {
            imageView = convertView as ImageView
        }
          
        imageView.setImageResource(myImages[position])
          
        return imageView
    }
}

Paso 4: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Vincule el adaptador a la vista de cuadrícula en el código principal (MainActivity.kt). Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.annotation.SuppressLint
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.*
  
class MainActivity : AppCompatActivity() {
  
    @SuppressLint("ClickableViewAccessibility")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the GridView from the layout
        val gridView = findViewById<GridView>(R.id.gridLayout)
          
        // Specify number of columns
        gridView.numColumns = 1
        
        // Setting the grid view 
        // adapter as MyGridViewAdapter
        gridView.adapter = MyGridViewAdapter(this)
    }
}

Salida: ahora ejecute la aplicación

Puede ver que podemos desplazar el GridView verticalmente.

Paso 5: agregue este código en el código principal para deshabilitar el desplazamiento (MainActivity.kt)

Kotlin

import android.annotation.SuppressLint
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.*
  
class MainActivity : AppCompatActivity() {
  
    @SuppressLint("ClickableViewAccessibility")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val gridView = findViewById<GridView>(R.id.gridLayout)
        gridView.numColumns = 1
        gridView.adapter = MyGridViewAdapter(this)
  
  
        // What should happen when 
        // the Grid View is touched
        gridView.setOnTouchListener { _, event ->
            
            // A Toast is generated for every touch and 
            // event action is set as ACTION_MOVE
            Toast.makeText(applicationContext, "Scrolling is Disabled", Toast.LENGTH_SHORT).show()
            event.action == MotionEvent.ACTION_MOVE
        }
    }
}

Salida: Ejecutar la aplicación

Puede ver que no podemos desplazar la vista de cuadrícula verticalmente.

Nota: puede agregar la imagen a continuación en el recurso

Imagen descargada de Internet

Ahora simplemente cópielo y péguelo en la carpeta Drawables en la carpeta res . Nómbrelos y haga clic en Aceptar .

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *