这篇文章主要是对官方文档的翻译。不当之处希望指正。
WebSetting的官方解释为:
Manages settings state for a WebView. When a WebView is first created, it obtains a set of default settings. These default settings will be returned from any getter call. A WebSettings object obtained from WebView.getSettings() is tied to the life of the WebView. If a WebView has been destroyed, any method call on WebSettings will throw an IllegalStateException.
翻译过来就是:
管理WebView的状态设置,当WebView第一次被创建的时候,它包含了一些默认的设置。这些默认的设置可以通过相应的get函数获取。WebSetting通过WebView.getSetting()获取,它的生命周期和WebView相连。如果WebView被销毁,调用WebSetting的任何方法都会抛出IllegalStateException。
WebSetting的方法介绍(只有set方法,get方法根据set方法推论):
1.setNavDump(boolean enabled);
将页面导航缓存转储到文本文件。默认值为false。此方法在API 26后,就过时了。
2.setSupportZoom(boolean support)
设置是否支持使用屏幕上的缩放控件或手势进行缩放。此设置不影响WebView的zoomIn()和zoomout()的设置。默认值是true。
3.setMediaPlaybackRequiresUserGesture(boolean require);
设置是否支持使用者用手势控制媒体的播放。默认是true。
4.setBuiltInZoomControls(boolean enabled);
设置WebView是否可以使用其内部的缩放机制。内置的缩放机制包括显示在WebView的屏幕上的缩放控件,也包括使用手势进行缩放。默认值是false。内置缩放机制是当前支持的唯一的缩放机制,建议始终启用此设置。
5.setDisplayZoomControls(boolean enabled);
当WebView使用内部缩放机制时,是否在屏幕上显示作坊控件。默认值是true。
6.setAllowFileAccess(boolean allow);
启用或禁用WebView中的文件访问。默认情况下启用文件访问。请注意,这只启用或禁用文件系统访问。Assets和一些资源仍然可以通过file:///android_asset and file:///android_res访问。
7.setAllowContentAccess(boolean allow);
启用或禁用WebView中的内容URL访问。内容URL Access允许WebView从在系统中安装的内容提供程序加载内容。默认设置为启用。
8.setLoadWithOverviewMode(boolean overview);
设置WebView是否以概览模式加载页面,即按宽度缩小内容以适合屏幕。当内容宽度大于webview控件的宽度时,会考虑此设置。默认值为false。
9.setEnableSmoothTransition(boolean enable);
设置在WebView在平移或缩放或WebView的窗口没有焦点时,是否启用平滑过渡。若设置成true,webview将选择一个最大化性能的解决方案。例如,在旋转过程中,webview的内容可能不会更新。如果false,webview将保持其准确性。默认值为false。
10.setUseWebViewBackgroundForOverscrollBackground(boolean view);
设置WebView是否将其背景用于滚动背景。如果为true,它将使用webview的背景。如果false,它将使用内部模式。默认值为true。API 26后弃用。
11.setSaveFormData(boolean save);
设置WebView是否应保存表单数据。在android o中,平台已经实现了一个功能齐全的自动填充功能来存储表单数据。因此,webview表单数据保存功能被禁用。
12.setSavePassword(boolean save);
设置WebView是否可以保存密码。默认值是true。
13.setTextZoom(int textZoom);
以百分比为单位设置页面的文本缩放。默认值为100。
14.setAcceptThirdPartyCookies(boolean accept);
为第三方Cookie设置策略。开发人员应该通过{@link cookiemanager setshouldacceptThirdPartyCookies}来访问它。
15.setTextSize(TextSize t);
设置页面字体的大小。默认是NORMAL.TextSize的类型有:SMALLEST(50), SMALLER(75), NORMAL(100), LARGER(150), LARGEST(200)。
16.setDefaultZoom(ZoomDensity zoom);
设置页面的默认缩放密度。这必须由ui线程调用。默认值为MEDIUM。ZoomDensity的类型有:FAR(150) 240dpi, MEDIUM(100) 160dpi, CLOSE(75) 120dpi。
17.setLightTouchEnabled(boolean enabled);
启用使用轻触进行选择并激活鼠标悬停。这个设置API 26后过时且没有效果。
18.setUserAgent(int ua);
使用整数代码设置用户代理字符串。0表示webview应使用android用户代理字符串。1表示webview应使用桌面用户代理字符串忽略其他值。默认为android用户代理字符串,即代码值0。
19.setUseWideViewPort(boolean use);
设置WebView是否应启用对ViewPort的支持。当设置值为false时,布局宽度始终设置为设备无关(CSS)像素中WebView控件的宽度。当值为true且页面包含viewport元标记时,使用标记中指定的宽度。如果页面不包含标记或不提供宽度,则将使用宽视口。
20.setSupportMultipleWindows(boolean support);
设置WebView是否支持多个窗口。如果设置为true, {@link WebChromeClient#onCreateWindow}必须由主程序调用。默认值为false。
21.setLayoutAlgorithm(LayoutAlgorithm l);
设置基础布局算法。这将导致重新绘制WebView。默认值为NARROW_COLUMNS。LayoutAlgorithm类型有:NORMAL, SINGLE_COLUMN, NARROW_COLUMNS, TEXT_AUTOSIZING。
22.setStandardFontFamily(String font);
设置标准字体系列名称。默认为"sans-serif"。
23.setFixedFontFamily(String font);
设置固定字体系列名称。默认值是“monospace”。
24.setSansSerifFontFamily(String font);
设置sans-serif字体系列名称。默认为“sans-serif”。
25.setSerifFontFamily(String font);
设置serif字体系列名称。默认为“sans-serif”。
26.setCursiveFontFamily(String font);
设置草书字体族名称。默认为“Cursive”。
27.setFantasyFontFamily(String font);
设置fantasy字体族名称。默认为“fantasy”。
28.setMinimumFontSize(int size);
设置最小字体大小。默认值为8。参数大小1到72之间的非负整数。任何超出指定范围的数字都将被锁定。
29.setMinimumLogicalFontSize(int size);
设置最小逻辑字体大小.默认值为8。参数大小1到72之间的非负整数。任何超出指定范围的数字都将被锁定。
30.setDefaultFontSize(int size);
设置默认字体大小.默认值为8。参数大小1到72之间的非负整数。任何超出指定范围的数字都将被锁定。
31.setDefaultFixedFontSize(int size);
设置默认固定字体大小.默认值为8。参数大小1到72之间的非负整数。任何超出指定范围的数字都将被锁定。
32.setLoadsImagesAutomatically(boolean flag);
设置WebView是否应加载图像资源。注意,此方法控制所有图像的加载,包括使用数据uri方案嵌入的图像。使用{@link setblocknetworkimage}仅控制使用网络uri方案指定的图像的加载。请注意,如果此设置的值从false更改为true,则将自动加载当前由webview显示的内容引用的所有图像资源。默认值为true
33.setBlockNetworkImage(boolean flag);
设置webview是否不应从网络加载图像资源(通过http和https uri方案访问的资源)。注意,除非{@link getloadsimagesautomatily}返回true,否则此方法无效。还要注意,使用{@link setblocknetworkloads}禁用所有网络加载也将阻止加载网络映像,即使此标志设置为false。当此设置的值从true更改为false时,由当前显示的内容引用的网络图像资源webview将自动获取。默认值为false。
34.setBlockNetworkLoads(boolean flag);
设置WebView是否不应从网络加载资源。请使用{@link\setblocknetworkimage}仅避免加载图像资源。请注意,如果此设置的值从true更改为false,则在调用{@link android.webkit.WebView#reload}之前,不会获取由webview当前显示的内容引用的网络资源。需要设置可以访问网络的权限。
35.setJavaScriptEnabled(boolean flag);
webview是否可以执行javascript。
36.setAllowUniversalAccessFromFileURLs(boolean flag);
设置是否应允许在文件方案url上下文中运行的javascript访问任何来源的内容。这包括从其他文件方案url访问内容。ICE_CREAM_SANDWICH_MR1及其以下默认值是true,JELLY_BEAN及其以上为false。
37.setAllowFileAccessFromFileURLs(boolean flag);
设置WebView运行中的一个文件方案被允许访问其他文件方案中的内容,ICE_CREAM_SANDWICH_MR1及其以下默认值是true,JELLY_BEAN及其以上为false。
38.setPluginsEnabled(boolean flag);
设置WebView是否可以使用插件。默认值是false。
39.setPluginState(PluginState state);
告诉webview启用、禁用或按需拥有插件。按需模式意味着如果插件存在,它可以处理嵌入的内容,将显示一个占位符图标,而不是插件。当占位符被单击,插件将被启用。默认值是关闭。
40.setGeolocationDatabasePath(String databasePath);
设置保存地理位置数据库的路径。
41.setAppCacheEnabled(boolean flag);
设置是否应启用应用程序缓存API。默认值false.
42.setAppCachePath(String appCachePath);
设置应用程序缓存文件的路径。为了应用程序缓存要启用的API,必须使用应用程序可以写入的路径。这种方法应该是调用一次:忽略重复的调用。
43.setAppCacheMaxSize(long appCacheMaxSize);
设置应用程序缓存内容的最大大小。默认值为MAX_VALUE;
44.setDatabaseEnabled(boolean flag);
设置是否启用数据库存储API。默认值为false。
45.setDomStorageEnabled(boolean flag);
设置是否启用dom存储api。默认值为false。
46.setGeolocationEnabled(boolean flag);
是否开启定位功能,默认是true.请注意,为了使地理位置api可用。WebView中的页面,必须满足以下要求:应用程序必须具有访问设备位置的权限,应用程序必须提供 {@link WebChromeClient#onGeolocationPermissionsShowPrompt} 的回调接收页面通过JavaScript Geolocation API要求的地理信息。
47.setJavaScriptCanOpenWindowsAutomatically(boolean flag);
设置javascript自动打开窗口。这适用于javascript函数window.open()。默认值为false。
48.setDefaultTextEncodingName(String encoding);
设置解码HTML页时使用的默认文本编码名称。默认值为“utf-8”。
49.setUserAgentString(String ua);
设置网页的用户代理字串。如果string是空的,系统默认值将被使用。请注意,kitkat android版本开始,在加载网页时更改用户代理将导致webview再次启动加载。
50.setNeedInitialFocus(boolean flag);
告诉webview是否需要将节点设置为具有焦点当 {@link WebView#requestFocus(int, android.graphics.Rect)}被调用。这个
默认值为true。
51.setRenderPriority(RenderPriority priority);
设置渲染线程的优先级。与其他设置不同,此每个进程只需要调用一次。默认值为NORMAL。
52.setCacheMode(int mode)
重写缓存被使用到的方法,缓存的使用方式基于导航类型。对于一般的页面加载,将检查缓存,并根据需要重新验证内容。
当向后导航时,内容是不是重新验证,而是从缓存中检索内容。默认值是LOAD_DEFAULT。
53.setMixedContentMode(int mode);
配置安全源尝试从不安全源加载资源时WebView的行为。
54.setVideoOverlayForEmbeddedEncryptedVideoEnabled(boolean flag);
设置是否对嵌入的加密视频使用视频覆盖。
55.setOffscreenPreRaster(boolean enabled);
设置此WebView在屏幕外但附加到窗口时是否应光栅平铺。打开这个可以避免在屏幕上设置屏幕外webview动画时呈现。此模式下的屏幕外网络视图使用更多内存。默认值为false。
56.setSafeBrowsingEnabled(boolean enabled);
设置是否启用安全浏览。安全浏览允许webview通过验证链接来防止恶意软件和网络钓鱼攻击。