169 похожих чатов

Привет всем👋🏻 Реализовываю архитектуру касаний через onInterceptTouchEvent, onTouchEvent Что нужно BottomSheet со списком,


Когда свайпаю вниз по BottomSheet, он перехватывает касания, сдвигается вниз (обновляет данные).
Когда свайпаю вбок по item списка список показывает меню, то есть BottomSheet должен отменить перехват событий onTouchEvent и передать события вниз по иерархии в item.

❌Проблема
Однажды передав события в onTouchEvent, нельзя его спустить вниз по иерархии в item, можно только переслать вверх по иерархии в родительский onTouchEvent

❓Скажите плиз, реально ли отменить onInterceptTouchEvent,
что бы viewgroup смог передать событие вниз
(в моем примере при условии если движения свайпа вбок)?

25 ответов

19 просмотров

Можно перехватывать onTouchEvent в кнопке, запоминать флаг, что касание началось, и передавать дальше. Уже в родительском onTouchEvent решать что делать, в зависимости от флагов

Anton-ElTonio Автор вопроса
Alex Android
Можно перехватывать onTouchEvent в кнопке, запомин...

Вопросы: 1. Как передавать флаг/переменную вверх по иерархии? 2. Если у меня длинющая наследовательность, мне по идее нужно сделать CustomViewGroup для каждого родителя что бы обрабатывать передавать дальше false в onTouchEvent? Можно ли напрямую обратиться к самому верхнему родителю?

1. Где-то в переменных фрагмента/активити/другом хранилище 2. Самый верхний родитель это window. Тут по ситуации

Anton-ElTonio Автор вопроса
Alex Android
1. Где-то в переменных фрагмента/активити/другом х...

2. Как можно в onTouchEvent вернуть false и передать событие в самые верхние уровни?

Anton-ElTonio Автор вопроса

Маня подбешивает эта магия)

ну как только ты возвращаешь false, происходит отказ от жеста, он обрабатывается кем-то другим

Anton-ElTonio Автор вопроса

Как 1 раз передать события на верх при условии, а все остальные обрабатывать по дефолту?

Anton-ElTonio Автор вопроса
Mike (деньги не клянчу)
ну как только ты возвращаешь false, происходит отк...

Это потрясающе, 1 раз отказался, а как перестать отказываться навсегда?

Anton ElTonio
Это потрясающе, 1 раз отказался, а как перестать о...

видимо, нужно не отказываться, а, наоборот, использовать intercept со стороны родителя

Anton-ElTonio Автор вопроса
Mike (деньги не клянчу)
видимо, нужно не отказываться, а, наоборот, исполь...

Если правильно понял тебя, типа обрабатывать все условия у родителя через intercept (допустим свайп вниз), а все отальное пусть обрабатывает дочерний? Делал, та же история, как только родитель забирает себе жесты, то он их забирает навсегда, и уже наш item не получит их

Anton-ElTonio Автор вопроса

Не совсем понял, dispatchTouchEvent имеешь ввиду? Может я что-то не понимаю, чем он может помочь?

Anton ElTonio
Не совсем понял, dispatchTouchEvent имеешь ввиду? ...

родитель может сам передать тач детям, если посчитает нужным

Anton-ElTonio Автор вопроса
Mike (деньги не клянчу)
родитель может сам передать тач детям, если посчит...

Нужно почитать, Тип я могу указать не передавать событие вниз?

Anton-ElTonio Автор вопроса
Alex Android
return false

Имел ввиду сразу на самый верхній уровень

Anton-ElTonio Автор вопроса

Привет👋🏻 Продолжение вопроса на засыпку onTouchEvent Как можно в родительском viewgroup перехватить касания на 1 жест через onInterceptTouchEvent и потом отменить перехвати по условию и передавать дальше в дочерний view Или... как в дочернем view перехватить касания в onTouchEvent и по условию передать наверх в viewgroup но на 1 жест, потом дальше продолжить обрабатывать в дочернем onTouchEvent? Или по другому. Как перестать навсегда перехватывать касания?

1. Обработчик онТач возвращает тру/фолс в зависимости от того надо ли передать обработку дальше подлежащим вью - возвращай что надо 2. Посл.вопрос - ну, сними отработчик вообще к примеру.

Anton-ElTonio Автор вопроса
Сергей П.
1. Обработчик онТач возвращает тру/фолс в зависимо...

1. онТач возвращает тру/фолс в зависимости надо ли передать на верх касания или нет. Но проблема заметил, что оно передает навсегда. То есть как только ты передашь касание наверх в кастомный СкроллВью к примеру, то все, больше нижлежащие view не смогут брать касания

Anton-ElTonio Автор вопроса

Гм, у меня следующий жест не приходит туда же, Судя по поведению и логам. Короче элемент списка уже перестает касаться, тока скрол отпрабатывает

Anton ElTonio
Гм, у меня следующий жест не приходит туда же, Суд...

В онтач или онинтерсепт? С интерсептом не работал А в онтач следующим за акшн_даун обычне приходят перемещения, не помню куда приходили

Anton-ElTonio Автор вопроса
Сергей П.
В онтач или онинтерсепт? С интерсептом не работал ...

Ой, тогда это история для тебя будет кашей, если начнешь разбираться, архитектура касания в андроиде те еще дебри)

Anton ElTonio
Ой, тогда это история для тебя будет кашей, если н...

Не, не кашей, разбирался когда раскраску писал, там надо все жесты обрабатывать было - и масштаб и клики и даблклики и черта лысого

Anton ElTonio
Привет👋🏻 Продолжение вопроса на засыпку onTouchEve...

посмотрите про requestDisallowInterceptTouchEvent, как-то так

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта