Адель, это проблема с первым кликом, или ты вообще не получаешь клик?
Существует эта проблема, если у вас есть несколько кликабельных макетов, вы не получаете никаких событий клика для первого. Это потому, что сначала он выбирается, а затем вы получаете событие click, попробуйте следующий код.
private class CustomTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
TextView tv = (TextView) v.findViewById(R.id.single_line_text);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
tv.setTextColor(COLOR_WHEN_PRESSED);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
tv.setTextColor(COLOR_WHEN_RELEASED);
// Action of click goes here
} else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
tv.setTextColor(COLOR_WHEN_RELEASED);
// To handle release outside the layout region
}
return false;
}
}
Это работает в моей текущей реализации, если вы установите сенсорный приемник для вашего макета.
Вы также должны установить ниже на вашем макете
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
Надеюсь, это поможет !!!
РЕДАКТИРОВАТЬ: Кроме того, должен быть флаг и вниз, и вверх. Установите его в DOWN и проверьте, установлен ли он в UP. Это позволит избежать ошибки, когда пользователь может нажать в любом месте экрана, а затем навести курсор на текстовое представление и отпустить его.