#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; } });
Комментариев нет:
Отправить комментарий