Hello,
Welcome to our Microsoft Q&A platform!
You can add SetOnTouchListener
to disable the WebView's scroll event. Here is custom-renderer for webview.
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Webkit;
using Android.Widget;
using App94.Droid;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(CustomWebViewRenderer))]
namespace App94.Droid
{
public class CustomWebViewRenderer : WebViewRenderer
{
public CustomWebViewRenderer(Context context) : base(context)
{
}
Android.Webkit.WebView _webView;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.SetWebViewClient(new CustomWebViewClient(e.NewElement));
Control.SetOnTouchListener(new MyTouchListener());
}
}
}
internal class MyTouchListener : Java.Lang.Object, Android.Views.View.IOnTouchListener
{
public bool OnTouch(Android.Views.View v, MotionEvent e)
{
return (e.Action == Android.Views.MotionEventActions.Move);
}
}
internal class CustomWebViewClient : WebViewClient
{
private Xamarin.Forms.WebView newElement;
public CustomWebViewClient(Xamarin.Forms.WebView newElement)
{
this.newElement = newElement;
}
public override async void OnPageFinished(Android.Webkit.WebView view, string url)
{
if (newElement != null)
{
int i = 10;
while (view.ContentHeight == 0 && i-- > 0)
await System.Threading.Tasks.Task.Delay(100);
newElement.HeightRequest = view.ContentHeight;
}
base.OnPageFinished(view, url);
}
}
}
Best Regards,
Leon Lu
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.