我使用Xamarin Webview来显示一个带有链接pdf文件的按钮的网站。浏览器会在一个新的选项卡中打开pdf文件,但webview不支持选项卡,只需点击按钮即可。我该如何处理?
最可取的解决方案是在同一个网页视图中显示新的选项卡,就好像它不会打开新的选项卡一样。我试图实现一个从android网页视图继承的自定义渲染器,但即使在那里,我也找不到处理它或只获取按钮重定向到的URL的可能性。
提前感谢您的帮助。
WebView不支持选项卡,如果您想要选项卡式浏览器UI,则需要自己实现。
1.将SetSupportMultipleWindows
设置为真
2.实现WebChromeClient
并覆盖它的OnCreateWindow
方法。
public class MyWebViewRenderer : WebViewRenderer
{
public MyWebViewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if(Control!=null)
{
Control.Settings.SetSupportMultipleWindows(true);
Control.Settings.JavaScriptEnabled = true;
Control.SetWebChromeClient(new MyWebChromeClient());
}
}
}
public class MyWebChromeClient: WebChromeClient
{
public override bool OnCreateWindow(Android.Webkit.WebView view, bool isDialog, bool isUserGesture, Message resultMsg)
{
if(!isDialog)
{
return true;
}
return base.OnCreateWindow(view, isDialog, isUserGesture, resultMsg);
}
}
}