Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีปิดการเลื่อน GridView ใน Android ด้วย Kotlin

ภาพรวม

ตัวอย่างนี้สาธิตวิธีปิดการเลื่อน (scrolling) ของ GridView ในแอปพลิเคชัน Android โดยใช้ภาษา Kotlin วิธีนี้เหมาะสำหรับกรณีที่ต้องการแสดง GridView ในพื้นที่ที่กำหนดไว้โดยไม่ต้องการให้ผู้ใช้เลื่อนดูเนื้อหา

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

เปิด Android Studio เลือก File → New Project กรอกรายละเอียดที่จำเป็นเพื่อสร้างโปรเจกต์ใหม่

ขั้นตอนที่ 2: จัดรูปแบบหน้าจอ (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://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>

ขั้นตอนที่ 3: เขียนโค้ดหลัก (MainActivity.kt)

import android.content.Context
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.*
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var gridView: GridView
    private var imageIDs = arrayOf(
        R.drawable.ronaldo, R.drawable.andre, R.drawable.bernado,
        R.drawable.carvalho, R.drawable.bruno, R.drawable.patricio,
        R.drawable.pepe, R.drawable.felix, R.drawable.semedo, R.drawable.ronaldo
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        gridView = findViewById(R.id.gridLayout)
        gridView.numColumns = 3
        gridView.adapter = ImageAdapterGridView(this)

        // ปิดการเลื่อนโดยการจับเหตุการณ์ touch
        gridView.setOnTouchListener { _, event ->
            Toast.makeText(this@MainActivity, "Scrolling is Disabled", Toast.LENGTH_SHORT).show()
            event.action == MotionEvent.ACTION_MOVE
        }
    }

    inner class ImageAdapterGridView internal constructor(c: Context) : BaseAdapter() {
        private val context: Context = c

        override fun getCount(): Int = imageIDs.size
        override fun getItem(position: Int): Any? = null
        override fun getItemId(position: Int): Long = 0

        override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
            val imageView: ImageView
            if (convertView == null) {
                imageView = ImageView(context).apply {
                    layoutParams = AbsListView.LayoutParams(
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT
                    )
                    scaleType = ImageView.ScaleType.CENTER_CROP
                    setPadding(30, 30, 30, 30)
                }
            } else {
                imageView = convertView as ImageView
            }
            imageView.setImageResource(imageIDs[position])
            return imageView
        }
    }
}

ขั้นตอนที่ 4: กำหนดสิทธิ์ใน AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <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>

การทดสอบ

รันแอปพลิเคชันบนอุปกรณ์จริงหรือ Emulator GridView จะแสดงภาพใน 3 คอลัมน์และไม่สามารถเลื่อนได้ เมื่อผู้ใช้พยายามเลื่อน จะแสดง Toast แจ้งว่า "Scrolling is Disabled"