KotlinでAndroidアプリのGridViewスクロールを無効化する方法を徹底解説
この記事では、Kotlinを使ってAndroidアプリのGridView(グリッドビュー)のスクロール機能を無効にする方法を、サンプルコードとともにわかりやすく解説します。GridViewは画像ギャラリーやメニュー表示などによく使われるUIコンポーネントですが、状況によってはスクロールさせたくないケースもあります。そのような場合に役立つテクニックです。
実装の手順
ステップ1:新規プロジェクトを作成する
まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。
ステップ2:レイアウトファイル(activity_main.xml)を編集する
次に、res/layout/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>
ここでは、画面全体にGridViewを配置したシンプルなレイアウトを定義しています。
ステップ3:MainActivity.ktにコードを記述する
続いて、src/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
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)
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 {
return imageIDs.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(imageIDs[position])
return imageView
}
}
}このコードのポイントは setOnTouchListener の部分です。タッチイベントが発生した際にトーストメッセージ「Scrolling is Disabled(スクロールは無効です)」を表示し、MotionEvent.ACTION_MOVE のときに true を返すことで、GridViewのスクロール動作を無効化しています。
また、内部クラスとして ImageAdapterGridView を実装し、画像リソースをGridViewの各セルに表示できるようにしています。ViewHolderパターンに近い形で convertView を再利用することで、パフォーマンスにも配慮した実装になっています。
ステップ4:AndroidManifest.xmlを確認・編集する
最後に、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>
アプリを実行して動作を確認しよう
それでは、実際にアプリケーションを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続していることを前提としています。Android Studioからアプリを起動するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーにある「Run」アイコン
をクリックします。表示された選択肢から接続中のモバイルデバイスを選択すると、実機の画面にアプリが起動します。
GridView上で指をスワイプしても画面がスクロールせず、「Scrolling is Disabled」というトーストメッセージが表示されれば成功です。

-
AndroidでBluetoothを無効にする方法をコード例付きで解説
AndroidでBluetoothを無効にする方法 この記事では、AndroidアプリからBluetoothを無効化(オフ)する方法を、実際のコード例とともにわかりやすく解説します。BluetoothManagerから取得できるアダプターのdisable()メソッドを呼び出すことで、プログラム側からBluetoothをオフにすることが可能です。 手順1:Android Studioで新しいプロジェクトを作成する まず、Android Studioを開き、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 手順2
-
KotlinでAndroidアプリのJSONオブジェクトを解析する方法を徹底解説
この記事では、Kotlinを使用してAndroidアプリでJSONオブジェクトを解析する方法を、サンプルプロジェクトを通してステップごとに詳しく解説します。アセットフォルダに配置したJSONファイルを読み込み、その内容をRecyclerViewで一覧表示するまでの流れを学べます。 ステップ1:Android Studioで新規プロジェクトを作成する まず、Android Studioを開き、メニューから「File」→「New Project」を選択して、必要な項目をすべて入力し、新しいプロジェクトを作成します。プロジェクトのテンプレートには「Empty Activity」を選んでおくとスムーズ