ScrollView dinámico en Kotlin

En Android , ScrollView incorpora múltiples vistas dentro de sí mismo y permite desplazarse por ellas.

En este artículo, analizaremos cómo crear mediante programación una vista de desplazamiento en Kotlin.

Comencemos creando primero un proyecto en Android Studio. Para hacerlo, siga estas instrucciones:

  • Haga clic en Archivo , luego en Nuevo y luego en Nuevo proyecto y asigne el nombre que desee.
  • Luego, seleccione Compatibilidad con el idioma Kotlin y haga clic en el botón siguiente.
  • Seleccione el SDK mínimo , lo que necesite.
  • Seleccione Actividad vacía y luego haga clic en finalizar .

Modificar archivo activity_main.xml

El segundo paso es diseñar nuestra página de diseño. Aquí, usaremos LinearLayout para obtener la Vista de desplazamiento del archivo Kotlin.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/layout"
        tools:context=".MainActivity">
  
  
  
</LinearLayout>

Adición de imágenes

Necesitaremos algunas imágenes para usar en la aplicación. Puede usar las imágenes que desee, pero las imágenes deben copiarse desde la ruta de nuestra computadora local a la carpeta app/res/drawable.

Crear vista de desplazamiento en el archivo MainActivity.kt

Abra app/src/main/java/yourPackageName/MainActivity.kt. En este archivo, declaramos una variable ScrollView para crear el widget Scroll View como este:

val scrollView = ScrollView(this)
        val layoutParams = LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.MATCH_PARENT)
        scrollView.layoutParams = layoutParams

luego agregue el widget en el diseño usando esto

linearLayout1?.addView(scrollView)
package com.geeksforgeeks.myfirstkotlinapp 
  
import androidx.appcompat.app.AppCompatActivity 
import android.os.Bundle
import android.view.Gravity
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ScrollView
   
class MainActivity : AppCompatActivity() {
   
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
   
        val scrollView = ScrollView(this)
        val layoutParams = LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.MATCH_PARENT)
        scrollView.layoutParams = layoutParams
   
        val linearLayout = LinearLayout(this)
        val linearParams = LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT)
        linearLayout.orientation = LinearLayout.VERTICAL
        linearLayout.layoutParams = linearParams
   
        scrollView.addView(linearLayout)
   
        val imageView1 = ImageView(this)
        val params1 =
            LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.WRAP_CONTENT)
        //setting margin 
        params1.setMargins(0, 30, 0, 30)
        //aligning the layout to center of the screen
        params1.gravity = Gravity.CENTER
        imageView1.setLayoutParams(params1)
        //setting our own downloaded/custom image to the imageView
        imageView1.setImageResource(R.drawable.image1)
        linearLayout.addView(imageView1)
   
        val imageView2 = ImageView(this)
        val params2 =
            LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.WRAP_CONTENT)
        params2.setMargins(0, 0, 0, 30)
        params2.gravity = Gravity.CENTER
        imageView2.setLayoutParams(params2)
        imageView2.setImageResource(R.drawable.image2)
        linearLayout.addView(imageView2)
   
        val imageView3 = ImageView(this)
        val params3 =
            LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.WRAP_CONTENT)
        params3.setMargins(0, 0, 0, 30)
        params3.gravity = Gravity.CENTER
        imageView3.setLayoutParams(params3)
        imageView3.setImageResource(R.drawable.image3)
        linearLayout.addView(imageView3)
   
        val imageView4 = ImageView(this)
        val params4 =
            LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.WRAP_CONTENT)
        params4.setMargins(0, 0, 0, 30)
        params4.gravity = Gravity.CENTER
        imageView4.setLayoutParams(params4)
        imageView4.setImageResource(R.drawable.image4)
        linearLayout.addView(imageView4)
   
        val linearLayout1 = findViewById<LinearLayout>(R.id.layout)
        linearLayout1?.addView(scrollView)
    }
}

Archivo AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="i.apps.myapplication">
  
    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
  
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
  
</manifest>

Ejecutar como emulador:

Publicación traducida automáticamente

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