Страницы

Поиск по вопросам

четверг, 6 июня 2019 г.

Android: Как на кнопке одновременно задействовать два сушателя

Возникла следующая проблема:
Имеется кнопка у которой необходимо обрабатывать два слушателя. Первый это onTouchListener, второй onClickListener. Код слушателя onTouchListener() ниже:
OnTouchListener dragt = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { FrameLayout.LayoutParams par = (LayoutParams) v.getLayoutParams(); switch(v.getId()) { case R.id.button1:
{ switch(event.getAction()) { case MotionEvent.ACTION_MOVE: { par.topMargin = (int)event.getRawY() - (v.getHeight()); par.leftMargin = (int)event.getRawX() - (v.getWidth()/2); par.bottomMargin = (int)event.getRawX() - (v.getWidth()/2); par.rightMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(par); break; } case MotionEvent.ACTION_UP: { par.height = 120; par.width = 120; par.topMargin = (int)event.getRawY() - (v.getHeight()); par.leftMargin = (int)event.getRawX() - (v.getWidth()/2); par.bottomMargin = (int)event.getRawX() - (v.getWidth()/2); par.rightMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(par); break; } case MotionEvent.ACTION_DOWN: { par.height = 150; par.width = 150; v.setLayoutParams(par); break; } } break; } } return true; } };
Мне же необходимо чтобы при обычном клике срабатывал onClick(). Назначал слушателя onClickListener - не работает(то есть онтач срабатывает, а онклик нет), назначал кнопке свойство android:onClick="knopka"
Далее вызывал в активити:
public void knopka(View v) { System.out.println("Работай же!!!"); }
Все равно не работает. Как еще сделать не представляю!


Ответ

Как обычно, читаем документацию Returns True if the listener has consumed the event, false otherwise. Таким образом, как нетрудно догадаться, вам нужно возвращать из OnTouchListener.onTouch false, а не true

Комментариев нет:

Отправить комментарий