カテゴリー
Kotlin言語

Android:Kotlin:View に onTouchListener を設定(performClick をオーバーライドする)

Activity/Fragment で TextView に setOnTouchListener を設定してみます。Android Studio の警告が出ないように performClick() をオーバーライドしてみます


TextView に setOnTouchListener を設定

Activity/Fragment で TextView に setOnTouchListener を設定してみます

binding.textView.setOnTouchListener { v, event ->
	when (event.actionMasked) {
		MotionEvent.ACTION_DOWN -> {
			・・・
		}
		MotionEvent.ACTION_MOVE -> {
			・・・
		}
		MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
			・・・
		}
	}
	true
}

動くけど警告がでちゃうんです

これでも動作しました。でも、Android Studio から performClick() メソッドをオーバーライドするようにと警告されてしまうので修正してみます

カスタムビューの作成(performClick のオーバーライド)

カスタムビューを作成します

  • TextView を継承したカスタムビュー(MyCustomTextView)を作成してみます。カスタムビューの中で performClick() をオーバーライドします
  • performClick() メソッドは、実行すると onClick() が呼び出されます(onLongClick を呼び出す performLongClick もあります)

カスタムビューの作成(MyCustomTextView.kt)

package com.example.appname

import ・・・

class MyCustomTextView: AppCompatTextView {
	constructor(context: Context) : super(context)
	constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
	constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

	・・・

	override fun performClick(): Boolean {
		return super.performClick()
	}

}

performClick() メソッドのオーバーライド、できました

レイアウトファイルでカスタムビューを利用

カスタムビューを使うようにレイアウトファイルを修正しますね

Activity/Fragment のレイアウトファイルを修正します。TextView のかわりに MyCustomTextView を使うように書き換えます

レイアウトファイル:TextView の代わりにカスタムビュー(MyCustomTextView)に変更

<com.example.appname.MyCustomTextView
	android:id="@+id/text_view"
	・・・
	・・・ />

performClick() メソッドを呼び出す

適当なところで performClick() を呼び出すようにしますね

Activity/Fragment のクラスファイルで setOnTouchListenr を修正します。onClick() を呼び出すところに performClick() を記述します

Activity/Fragment での記述に perfomClick() を追加

binding.textView.setOnTouchListener { v, event ->
	when (event.actionMasked) {
		MotionEvent.ACTION_DOWN -> {
			・・・
		}
		MotionEvent.ACTION_MOVE -> {
			・・・
		}
		MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
			・・・
			v.performClick()
		}
	}
	true
}

Android Studio の警告が消えました