前置き
EditText(たぶんTextViewとかも)のonClickにイベントをただ指定するだけではイベントが発火しなかった。結論から言うと、clickableとfucusableをtrueにすることでそもそものクリックイベントを受けれるようにする必要があったようだ。
詳細
サンプルに、EditTextだけを配置したActivity
クリックされたらToast表示するだけのイベント関数
fun onClickEditText(v: View)
= Toast.makeText(this, "click!", Toast.LENGTH_SHORT).show()
余計な項目が多くて見にくいんだけど、android:onClick="onClickEditText"
を指定しただけ
activity.xml
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:onClick="onClickEditText"/>
→ 実際にタップしてもイベントが発火しない!!
EditTextにandroid:clickable="true"
とandroid:focusable="true"
を追記してあげるとイベントが発火します
activity.xml
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:onClick="onClickEditText"
android:clickable="true"
android:focusable="true"/>