En Android, ScrollView es una vista que permite al usuario desplazarse hacia arriba y hacia abajo para visitar los elementos declarados en su interior. ScrollView se usa más comúnmente para mostrar TextView que contiene una gran cantidad de texto que no cabe en una sola instancia de una pantalla. Los usuarios pueden desplazarse hacia abajo y hacia arriba para leer el texto completo de TextView. ScrollViews también se utilizan en formularios en los que la aplicación requiere que los usuarios lean todos y cada uno de los términos y condiciones antes de aceptarlos. A menos que se alcance el fondo, el usuario no puede continuar ya que los botones están deshabilitados. A continuación se muestra un ejemplo.
Entonces, en este artículo, le mostraremos cómo puede crear una función para detectar si el usuario ha llegado al final de ScrollView en Android. Siga los pasos a continuación una vez que el IDE esté listo.
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: Agregar una string
Vaya a aplicación > res > valores > strings.xml y agregue una string de muestra como se muestra a continuación.
XML
<resources> <string name="app_name">GFG | ScrollViewEnd</string> <string name="my_data">"Text Goes Here"</string> </resources>
Paso 3: 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 . Agregue un TextView dentro de un ScrollView como se muestra a continuación. Establezca el texto de TextView en la string que creamos en el código anterior.
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ScrollView android:id="@+id/scroll_view_1" android:layout_width="match_parent" android:layout_height="match_parent" tools:ignore="UselessParent"> <TextView android:id="@+id/text_view_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="@string/my_data"/> </ScrollView> </RelativeLayout>
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 . Se agregan comentarios dentro del código para comprender el código con más detalle.
Kotlin
package org.geeksforgeeks.scrollviewend import android.annotation.SuppressLint import android.os.Bundle import android.view.MotionEvent import android.view.View import android.view.ViewTreeObserver import android.widget.ScrollView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity // Extend Touch Listener and Scroll Listener class MainActivity : AppCompatActivity(), View.OnTouchListener, ViewTreeObserver.OnScrollChangedListener { // Declaring ScrollView from the layout file private lateinit var mScrollView: ScrollView @SuppressLint("ClickableViewAccessibility") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Initializing the ScrollView mScrollView = findViewById(R.id.scroll_view_1) // Invoking touch listener to detect movement of ScrollView mScrollView.setOnTouchListener(this) mScrollView.viewTreeObserver.addOnScrollChangedListener(this) } // We want to detect scroll and not touch, // so returning false in this member function @SuppressLint("ClickableViewAccessibility") override fun onTouch(p0: View?, p1: MotionEvent?): Boolean { return false } // Member function to detect Scroll, // when detected 0, it means bottom is reached override fun onScrollChanged() { val view = mScrollView.getChildAt(mScrollView.childCount - 1) val topDetector = mScrollView.scrollY val bottomDetector: Int = view.bottom - (mScrollView.height + mScrollView.scrollY) if (bottomDetector == 0) { Toast.makeText(baseContext, "Scroll View bottom reached", Toast.LENGTH_SHORT).show() } if (topDetector <= 0) { Toast.makeText(baseContext, "Scroll View top reached", Toast.LENGTH_SHORT).show() } } }
Producción:
Puede ver que cuando nos desplazamos hacia abajo para llegar al final, aparece un mensaje Toast que indica que se llegó al final. Lo mismo se sigue cuando se llega a la cima.
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA