문제
- ScrollView 안에 WebView를 넣었는데, WebView 의 스크롤이 동작하다 말고 ScrollView가 동작하는 상황
- ScrollView 는 세로, WebView 내부의 가로 Scroll 이 제대로 동작하지 않는다.
원인
- WebView 에서 발생한 Focus 가 ScrollView 에도 전달이 되면서 ScrollView 에게 Focus를 빼앗기는 현상
처리
- WebView 를 상속받은 CusomWebView 를 만들고, Focus 를 빼앗기지 않도록 할 것
<CustomWebView.java>
public class CustomWebView extends WebView {
public CustomWebView(@NonNull Context context) {
super(context);
}
public CustomWebView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomWebView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouchEvent(MotionEvent event) {
requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}
}
<CustomWebView.kt>
class CustomWebView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : WebView(context, attrs, defStyleAttr) {
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent): Boolean {
requestDisallowInterceptTouchEvent(true)
return super.onTouchEvent(event)
}
}
<xml>
<com.devhyeon.myapplication.CustomWebView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
ps. SwipteRefreshLayout 은 ScrollView 가 아닙니다.
ps2. ScrollView 안에 WebView를 넣는 이유는
<ScrollView>
<Layout>
<View>
<View>
<WebView>
<View>
</Layout>
</ScrollView>
이처럼 WebView 외적으로 View들과 여러개가 사용되고 Scroll 이 필요한 경우겠죠?
WebView 자체에서 상하,좌우 스크롤을 하기 위해서 ScrollView 를 추가하지 마세요! (멈춰~!)
'BackUp (관리중지) > Android Q&A' 카테고리의 다른 글
[Android] SafetyNonce 에는 무엇을 작성해야 하나요? (0) | 2021.06.08 |
---|---|
[Android] PermissionDialog 가 동작하지 않습니다. (0) | 2021.06.03 |
Fragment 를 사용하는데, 앱이 점점 느려져요. (0) | 2021.04.21 |