스크롤 이벤트가 가로 채기가 터치 이벤트가 부모 layout
으로 설정됩니다. onTouch
이벤트를 스크롤 할 때 ScrollView
에 보관할 수 있습니까?ScrollView가 포함 된 레이아웃에 터치 이벤트를 추가하는 방법
답변
이것은 매우 까다로운 부분입니다. Activity
의 오버라이드 된 메소드는 다음과 같습니다. public boolean onTouchEvent(MotionEvent event)
이것은 전체 화면에서 모든 터치 이벤트를 해석하는 일반적인 방법입니다. 그리고 당신은 말할 수 있습니다, "좋아, 나는 이것을 구현할 수 있고 나는 가기 좋다.". 여기 안드로이드가 어떻게 작동하는지에 대한 어려운 부분이 있습니다.
모두 알고 있듯이 View
에는 고유 한 구현을 추가하기 위해 구현할 수있는 onTouchEvent()
메서드가 있습니다. 그럼 어떤 방법으로들을 것인가? ScrollView
또는 Activity
? 이러한 터치 이벤트는 "내부"요소에서 "외부"요소로 이동하는 것으로 보입니다. 나는 부모 - 자식 관계를 의미한다.
또 다른 중요한 점은 onTouchEvent 메서드가 부울을 반환한다는 것입니다. 이 불리언 매개 변수는 터치 이벤트를 한 레벨 위로 올리거나 현재 View
으로 처리할지 여부를 결정합니다. 즉, onTouchEvent() 및 CustomViewB
자체 터치 이벤트를 구현하는 CustomViewA
이 있고 A가 B에서 자식 인 경우 touch 이벤트는 A를 먼저 통과하고 처리되지 않으면 B로 이동합니다.
기본적으로 그렇습니다. 그것은 당신이하고 싶은 터치 이벤트에 달려 있습니다.
터치 이벤트가 가로 일 때 ScrollView
은 true
을 반환합니다. 액티비티의 터치 이벤트는 ScrollView
터치 이벤트가 단독으로 처리되지 않은 경우에만 처리됩니다. 그렇지 않으면 스크롤 뷰의 on touch 이벤트를 오버라이드하고 구현해야하며 경우에 따라서는 전체 레이아웃에서 구현되도록 false를 반환해야합니다. 마지막 부분에 행운을 빈다. 나는 플링 효과를 구현하기 시작했지만 몇 가지 어려움이 생겨서 스크롤보기가있는 2 손가락 이동을 구현했으며 매력처럼 작동합니다.
이것은 대략 1 주일 간의 연구 및 실험이며, 이것이 내가 생각해 낸 개요입니다. 다른 것을 찾으면 알려주세요. 희망이 도움이되었습니다.