Конечно, просто обработайте событие onTouch в своем родительском классе.Затем решите, что вы с ним делаете и на что отправлять.
onTouch(touchEvent){
motionLayout.doClickIfYouWant(touchEvent)
motionLayout.doSwipeIfYouWant(touchEvent)
}
Псевдокод, , но вы можете отправить его обоим, если вы сначала поймаете его и решите, кто его получит,Также не забудьте вернуть обработанный логический флаг из обратного вызова onTouch, чтобы убедиться, что он не обрабатывается дважды.Наконец, если на экране доступны другие элементы, вам, возможно, придется проверить координаты x, y вашего касания, чтобы определить, следует ли перейти к motionLayout или просто вернуть «не обработано» и позволить нативному поведению передать касание.
Надеюсь, это поможет.Также, если класс motionLayout не предоставляет методы, к которым нужно прикоснуться, чтобы отправить правильное событие прикосновения более чем в одно место, вы все равно можете получить его с помощью отражения.Конечно, отражение может быть немного медленнее, поэтому используйте его с осторожностью, но я должен был сделать это раньше для класса макета, в котором были дочерние изображения, которые мне нужно было перемещать, и управлял касанием на родительском уровне, чтобы решить,Изображение получает это или нет, но оно не было общедоступным, поэтому я посмотрел на код и коснулся его путем отражения без проблем.Рассматривайте это как последнее средство, и, возможно, все, что вам нужно, открыто.
Также помните, что некоторые инженеры презирают рефлексию, поэтому кодируйте с осторожностью.