문제

- 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 를 추가하지 마세요! (멈춰~!)

+ Recent posts