ViewPager de Android en Kotlin

ViewPager permite a los usuarios deslizarse hacia la izquierda o hacia la derecha a través de las páginas que contienen datos o ver una pantalla completamente nueva. Puede encontrar esta función en la mayoría de las aplicaciones de redes sociales. WhatsApp también muestra a los usuarios tres pestañas en su aplicación cuando se abre: chats, estado y llamadas. Sería emocionante aprender esta función, ya que hemos visto las aplicaciones del mundo real de esta función. También se utiliza para ayudar al usuario a conocer la aplicación y sus características mientras instala la aplicación por primera vez. Usaremos TabLayout como ejemplo para aplicar el concepto ViewPager en la aplicación. Después de leer este artículo, le resultará fácil aplicar esta función en cualquier aplicación.

Breve recorrido

Comenzaremos agregando TabLayout y ViewPager en el archivo activity_main.xml . Después de hacer esto, agregaremos tres fragmentos en blanco a la aplicación. Cambiaremos el texto según nuestras necesidades en los tres archivos XML de los fragmentos. Ahora, crearemos la clase PageAdapter.kt en la que tenemos que trabajar con tres funciones getCount() , getItem() y getPageTitle() . Finalmente, solo necesitamos llamar al Adapter y al TabLayout . A continuación se proporciona un gif de muestra para obtener conocimientos prácticos sobre la idea que estamos implementando. 

Funciones importantes utilizadas en el adaptador de página

  • getCount(): devuelve el número de fragmentos para mostrar.
  • getItem(): devuelve el fragmento en el índice de posición.
  • getPageTitle: devuelve el título dado a la página (en nuestro caso, el título que se le da a cada página como tab1, tab2, tab3)

Implementación paso a paso 

Paso 1: crea un proyecto con la actividad vacía

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Asegúrese de haber elegido Kotlin como idioma al crear el proyecto.

Paso 2: trabajar con el archivo activity_main.xml

aplicación > res > diseño > actividad_principal.xml actividad_principal.xml Aquí acabamos de agregar TabLayout y ViewPager. 

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    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">
  
    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="409dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:layout_marginBottom="1dp"
        app:layout_constraintBottom_toTopOf="@+id/viewPager"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" >
    </com.google.android.material.tabs.TabLayout>
  
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="1dp"
        android:layout_marginEnd="1dp"
        android:layout_marginBottom="1dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tabLayout" />
    
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 3: Agregar los fragmentos en blanco 

Esta es la ruta para crear un fragmento en blanco en Android Studio.

Después de hacer clic en el fragmento en blanco, asigne un nombre al fragmento y haga clic en finalizar. Haz tres fragmentos en total. 

Paso 4: trabajar con los archivos XML de fragmentos 

En cada fragmento, hemos cambiado el texto y agregado las cosas básicas a nuestro archivo XML como textColor, textSize, etc. 

Fragmento 1

XML

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
    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"
    tools:context=".Fragment1">
  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/green"
        android:textSize="50dp"
        android:text="GFG 1" />
  
</FrameLayout>

Fragmento 2

XML

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 
    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"
    tools:context=".Fragment2">
  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/green"
        android:textSize="50dp"
        android:text="GFG 2" />
  
</FrameLayout>

Fragmento 3

XML

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    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"
    tools:context=".Fragment3">
  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/green"
        android:textSize="50dp"
        android:text="GFG 3" />
  
</FrameLayout>

Paso 5: agregar un adaptador de página

Kotlin

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
  
class PageAdapter(fm:FragmentManager) : FragmentPagerAdapter(fm) {
    override fun getCount(): Int {
        return 3;
    }
  
    override fun getItem(position: Int): Fragment {
        when(position) {
            0 -> {
                return Fragment1()
            }
            1 -> {
                return Fragment2()
            }
            2 -> {
                return Fragment3()
            }
            else -> {
                return Fragment1()
            }
        }
    }
  
    override fun getPageTitle(position: Int): CharSequence? {
        when(position) {
            0 -> {
                return "Tab 1"
            }
            1 -> {
                return "Tab 2"
            }
            2 -> {
                return "Tab 3"
            }
        }
        return super.getPageTitle(position)
    }
  
}

Paso 6: Trabajar con MainActivity.kt

Actividad principal.kt Actividad principal.kt

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val viewPager = findViewById<ViewPager>(R.id.viewPager)
        viewPager.adapter = PageAdapter(supportFragmentManager)
  
        val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
        tabLayout.setupWithViewPager(viewPager)
          
    }
}

Producción:

También puede intentar usar este concepto para hacer algo similar en Java. Haga clic aquí para obtener el artículo.

Publicación traducida automáticamente

Artículo escrito por kunalmali 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 *