2012-06-21 2 views
0

나는 scrollview 안에 포함 된 Webview 있습니다. Webview 자체에는 수직 스크롤 가능한 영역이 있습니다.Scrollview 내부에있는 Webviews에서 세로 스크롤하는 방법?

이제 웹보기 내부를 스크롤하려고하면 스크롤보기가 touchevent를 가로 채고 작은 스크롤 가능 div 만 이동하는 대신 전체 웹보기를 스크롤합니다.

웹보기를 스크롤하지 않을 경우에만 어떻게 스크롤보기가 작동합니까?

+0

안녕하세요 @Janusz 내가 직면하고있어 같은 문제. 그 해결책을 찾았 니? 그렇다면 대답으로 게시하시기 바랍니다 – Zombie

답변

0

이 솔루션은 Javascript Interface을 통해 Javascript 콜백을 사용합니다. WebView 내부에서 스크롤 할 수있는 UI 부분을 터치 할 때마다 Listener가 Java 스크립트를 통해 호출되며이 수신기는 WebViews 부모에서 requestDisallowInterceptTouchEvent을 호출합니다.

이것은 최적은 아니지만 현재로서는 가장 좋은 해결책입니다. 사용자가 매우 빠르게 스크롤하면 WebView의 레이어는 스크롤되지 않지만 일반 스크롤 속도에서는 정상적으로 작동합니다.

+0

당신이 사용하는 이것에 대한 몇 가지 코드를 공유하시기 바랍니다 수 있습니다. – Javanator

0

@Janusz, 나는 동일한 문제가있었습니다. 내 솔루션은 올바른 레이아웃을 가진 커플의 확장 된 스크롤 뷰 동작을 기반으로합니다. 나는 같은 질문에 대한 답을 썼다 here. 구현 문제 또는 질문이있는 경우 알려주십시오. 도움이되는지 여부를 알려주십시오.

0

제 경우에는 scrollview 컨테이너 내에 webview가 있고 scrollview와 webview는 전체 화면입니다. 내 webView touchListener에서 onTouch 이벤트를 재정 의하여이 문제를 해결할 수있었습니다.

scrollView = (ScrollView)findViewById(R.id.scrollview); 

    webView.setOnTouchListener(new OnTouchListener() {   
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      scrollView.requestDisallowInterceptTouchEvent(true); 
      return false; 
     } 
    } 
0

사용 TouchyWebView.java 레이아웃 파일에서

public class TouchyWebView extends WebView { 

    public TouchyWebView(Context context) { 
     super(context); 
    } 

    public TouchyWebView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public TouchyWebView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event){ 
     requestDisallowInterceptTouchEvent(true); 
     return super.onTouchEvent(event); 
    }   
} 

:

<yourclasapath.TouchyWebView 
       android:id="@+id/description_web" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       /> 
관련 문제