
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 の警告が消えました