using Android.OS;
using Android.Views;
using Android.Webkit;
using System.Common;
// ReSharper disable once CheckNamespace
namespace System
{
///
/// 对 类的扩展函数集
///
public static class WebViewExtensions
{
///
/// 使用此函数代替
///
///
public static bool Destroy_(this WebView? webView)
{
if (webView != null)
{
webView.StopLoading(); // 停止加载
if (webView.Settings != null)
webView.Settings.JavaScriptEnabled = false; // 禁用JS
webView.ClearHistory(); //清除历史记录
webView.RemoveAllViews();
var parent = webView.Parent;
if (parent is ViewGroup group)
group.RemoveView(webView); // 移除WebView
webView.Destroy(); // 销毁VebView
return true;
}
return false;
}
///
/// 在 初始化中优化
///
///
/// 是否仅加载HTML内容
public static void InitOptimize(this WebView webView, bool isHtmlOnly = true)
{
if (webView.Settings != null)
{
webView.Settings.SetRenderPriority(WebSettings.RenderPriority.High);
webView.Settings.BuiltInZoomControls = false;
webView.Settings.SetSupportZoom(false);
webView.Settings.DisplayZoomControls = false;
webView.Settings.BlockNetworkImage = isHtmlOnly;
webView.Settings.JavaScriptEnabled = !isHtmlOnly;
}
if (Build.VERSION.SdkInt < BuildVersionCodes.M)
{
#pragma warning disable CS0618 // 类型或成员已过时
webView.SetHorizontalScrollbarOverlay(false);
webView.SetVerticalScrollbarOverlay(false);
#pragma warning restore CS0618 // 类型或成员已过时
}
}
///
/// 加载 HTML 字符串
///
///
///
public static void LoadHtmlString(this WebView webView, string htmlString)
{
webView.LoadDataWithBaseURL(
baseUrl: null,
data: htmlString,
mimeType: MediaTypeNames.HTML,
encoding: Constants.UTF8,
historyUrl: null);
}
}
}