스크롤뷰 안에 스크롤이 필요한 경우
NestedScrollView를 이용하여, 스크롤이 되게 할 수 있는데,
웹뷰의 경우는 웹페이지가 스크롤이 필요한 경우라 NestedScrollView로 해결 할 수 없다.
해당 문제를 해결하기 위해선, 웹뷰에서 발생하는 터치 이벤트를
다른 뷰에 뺏기지 않아야 원하는 결과를 얻을 수 있다.
먼저 웹뷰를 상속 받는 클래스를 하나 만든다.
상속 받은 웹뷰 클래스에 onTouchEvent 메소드를 Overriding 한다.
public class RoadView extends WebView { @Override public boolean onTouchEvent(MotionEvent event) { requestDisallowInterceptTouchEvent(true); return super.onTouchEvent(event); } }
requestDisallowInterceptTouchEvent(true)를 추가 하면 웹뷰 단에서 처리할 코드는 완료된다.
이 메소드는 웹뷰에서 발생하는 이벤트를 다른 뷰에서 가로채는 것을 막는 역할을 한다.
따라서 부모뷰인 스크롤뷰가 웹뷰에서 발생하는 이벤트를 가로채지 못하게 된다.
마지막으로 아래와 같이 xml에 적용 하면 스크롤이 가능한 웹뷰가 만들어진다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <com.fimtrus.test.view.RoadView android:id="@+id/roadview" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginBottom="16dp" /> </LinearLayout> </ScrollView> </LinearLayout>
'Programming > Android' 카테고리의 다른 글
[Android] 툴바(Toolbar)와 맵뷰(MapView) 사용시 지도가 정상적으로 표시되지 않는 문제 (0) | 2017.05.16 |
---|---|
[Android] Lollipop 버전에서 Support Fragment 화면 갱신이 안될때(ListView, Button 등) (0) | 2017.04.20 |
[Android] 스테이터스바 컬러 변경(Change Statusbar Color) (0) | 2017.04.14 |
[Android] LinearLayout 에 View 동적 추가시 weight 주는 방법 (0) | 2017.04.13 |
[Android] 안드로이드 버튼 음영 제거(Remove button shadow on Android) (0) | 2017.04.10 |