Страницы

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

четверг, 26 декабря 2019 г.

OnTouchListener у Layout

#android #android_sdk #разметка #ontouchlistener




Имеется два Layout:

A - RelativeLayout.
B - LinearLayout.

Вот пример разметки:




    

        

        
        



На  Layout A я установил слушатель OnTouchListener. Мне нужно, чтобы при нажатии
на область Layout B или на его потомков, слушатель не срабатывал, а при касании за
границей Layout A срабатывал. 

При нажатии на Spinner слушатель Layout A не срабатывает, т.к. на нем (спиннере)
есть свой родной слушатель, однако у View его нет. Установить на него слушатель не
вариант. Что делать?
    


Ответы

Ответ 1



Добавьте OnTouchListener для Layout B и в нём устанавливайте значение булевой переменной, а в OnTouchListener для Layout A проверяйте значение этой переменной. Например, так: boolean ChildTouched = false; RelativeLayout ParentLayout = (RelativeLayout)findViewById(R.id.menuParentLayout); ParentLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (ChildTouched) { ChildTouched = false; return true; } System.out.println("Touch parent activity"); return true; } }); LinearLayout ChildLayout = (LinearLayout)findViewById(R.id.menuLayout); ChildLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { System.out.println("Touch child activity"); ChildTouched = true; return true; } });

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

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