Страницы

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

вторник, 17 марта 2020 г.

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

#java #android #android_on_click #ontouchlistener


Возникла следующая проблема:

Имеется кнопка у которой необходимо обрабатывать два слушателя. Первый это 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("Работай же!!!");
    }


Все равно не работает. Как еще сделать не представляю!
    


Ответы

Ответ 1



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

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

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