1

スクロールビュー内に埋め込まれた Webview があります。Webview 自体には、垂直スクロール可能な領域があります。

webview 内をスクロールしようとすると、scrollview は touchevent をインターセプトし、小さなスクロール可能な div のみが移動するのではなく、webview 全体をスクロールします。

webviewがスクロールしたくない場合にのみスクロールビューを機能させるにはどうすればよいですか?

4

4 に答える 4

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;
        }
   }
于 2014-03-28T21:39:01.343 に答える
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"
                 />
于 2018-01-24T06:06:36.443 に答える
0

@ Janusz、私は同じ問題を抱えていました。私の解決策は、正しいレイアウトと組み合わせた拡張スクロール ビュー動作に基づいています。同じ質問への回答をここに書きました。実装の問題や質問がある場合はお知らせください。それが役立つかどうかをお知らせください:)

于 2012-10-19T02:23:50.510 に答える
-1

私たちのソリューションは、Javascript Interfaceを介して Javascript コールバックを使用します。WebView 内でスクロール可能な UI の一部がタッチされるたびに、Java スクリプトを介してリスナーが呼び出され、このリスナーはWebViews 親でrequestDisallowInterceptTouchEventを呼び出します。

これは最適ではありませんが、現時点で見つかった最も優れたソリューションです。ユーザーが非常に速くスクロールすると、WebView のレイヤーはスクロールしませんが、通常のスクロール レートでは問題なく動作します。

于 2012-10-26T06:58:37.883 に答える