public class WebView
extends AbsoluteLayout
implements ViewTreeObserver.OnGlobalFocusChangeListener, ViewGroup.OnHierarchyChangeListener
java.lang.Object | ||||
↳ | android.view.View | |||
↳ | android.view.ViewGroup | |||
↳ | android.widget.AbsoluteLayout | |||
↳ | android.webkit.WebView |
显示网页的视图。 此课程是您可以推出自己的网络浏览器或仅在您的活动中显示一些在线内容的基础。 它使用WebKit渲染引擎来显示网页,并包括在历史中向前和向后导航,放大和缩小,执行文本搜索等等的方法。
请注意,为了让您的Activity访问Internet并在WebView中加载网页,您必须将 INTERNET
权限添加到您的Android Manifest文件中:
<uses-permission android:name="android.permission.INTERNET" />
这必须是 <manifest>
元素的子元素。
有关更多信息,请阅读 Building Web Apps in WebView 。
默认情况下,WebView不提供类似浏览器的小部件,不启用JavaScript并忽略网页错误。 如果你的目标只是将一些HTML作为你的用户界面的一部分显示出来,这可能是好的; 除了阅读外,用户不需要与网页交互,网页也不需要与用户交互。 如果你真的想要一个完整的Web浏览器,那么你可能想用URL Intent调用浏览器应用程序,而不是用WebView显示它。 例如:
Uri uri = Uri.parse("http://www.example.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
有关更多信息,请参阅 Intent
。
要在您自己的Activity中提供WebView,请在布局中包含 <WebView>
,或在 onCreate()
期间将整个Activity窗口设置为WebView:
WebView webview = new WebView(this); setContentView(webview);
然后加载所需的网页:
// Simplest usage: note that an exception will NOT be thrown // if there is an error loading this page (see below). webview.loadUrl("http://slashdot.org/"); // OR, you can also load from an HTML string: String summary = "<html><body>You scored <b>192</b> points.</body></html>"; webview.loadData(summary, "text/html", null); // ... although note that there are restrictions on what this HTML can do. // See the JavaDocs forloadData()
andloadDataWithBaseURL()
for more info.
WebView有几个定制点,您可以在其中添加自己的行为。 这些是:
WebChromeClient
subclass. This class is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here (see Debugging Tasks). WebViewClient
subclass. It will be called when things happen that impact the rendering of the content, eg, errors or form submissions. You can also intercept URL loading here (via shouldOverrideUrlLoading()
).WebSettings
, such as enabling JavaScript with setJavaScriptEnabled()
. addJavascriptInterface(Object, String)
method. This method allows you to inject Java objects into a page's JavaScript context, so that they can be accessed by JavaScript in the page.这是一个更复杂的例子,显示错误处理,设置和进度通知:
// Let's display the progress in the activity title bar, like the // browser app does. getWindow().requestFeature(Window.FEATURE_PROGRESS); webview.getSettings().setJavaScriptEnabled(true); final Activity activity = this; webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { // Activities and WebViews measure progress with different scales. // The progress meter will automatically disappear when we reach 100% activity.setProgress(progress * 1000); } }); webview.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); } }); webview.loadUrl("http://developer.android.com/");
要启用内置缩放功能,请设置WebSettings
。 setBuiltInZoomControls(boolean)
(在API级别CUPCAKE
引入)。
注意:如果高度或宽度设置为 WRAP_CONTENT
则使用缩放可能导致未定义的行为,应予以避免。
出于明显的安全原因,您的应用程序拥有自己的缓存,Cookie存储等。“它不共享浏览器应用程序的数据。
默认情况下,由HTML打开新窗口的请求被忽略。 无论它们是由JavaScript打开还是由链接上的目标属性打开,都是如此。 您可以自定义您的WebChromeClient
以提供您自己的行为以打开多个窗口,并以任何您想要的方式渲染它们。
当设备方向或任何其他配置更改时,活动的标准行为将被销毁并重新创建。 这将导致WebView重新加载当前页面。 如果你不想这样做,你可以设置你的活动来处理orientation
和keyboardHidden
变化,然后只留下WebView。 它会自动适当地重新定位自己。 有关如何在运行时处理配置更改的更多信息,请阅读Handling Runtime Changes 。
设备的屏幕密度基于屏幕分辨率。 低密度屏幕的每英寸可用像素数量较少,其中高密度屏幕的显示更多 - 有时显着更多 - 每英寸像素更多。 屏幕的密度很重要,因为在其他条件相同的情况下,屏幕像素定义其高度和宽度的UI元素(例如按钮)将在较低密度屏幕上显示较大而在较高密度屏幕上显示较小。 为了简单起见,Android将所有实际的屏幕密度折叠为三种广义密度:高,中,低。
默认情况下,WebView会缩放网页,以便在中等密度屏幕上以与默认外观相匹配的大小绘制网页。 因此,它在高密度屏幕上应用1.5倍缩放(因为其像素较小),在低密度屏幕上缩放0.75倍(因为其像素较大)。 从API级别ECLAIR
,WebView支持DOM,CSS和元标记功能,以帮助您(作为Web开发人员)以不同屏幕密度的目标屏幕为目标。
以下是可用于处理不同屏幕密度的功能摘要:
window.devicePixelRatio
DOM property. The value of this property specifies the default scaling factor used for the current device. For example, if the value of window.devicePixelRatio
is "1.0", then the device is considered a medium density (mdpi) device and default scaling is not applied to the web page; if the value is "1.5", then the device is considered a high density device (hdpi) and the page content is scaled 1.5x; if the value is "0.75", then the device is considered a low density device (ldpi) and the content is scaled 0.75x.-webkit-device-pixel-ratio
CSS media query. Use this to specify the screen densities for which this style sheet is to be used. The corresponding value should be either "0.75", "1", or "1.5", to indicate that the styles are for devices with low density, medium density, or high density screens, respectively. For example: <link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />
hdpi.css
样式表仅用于屏幕像素比率为1.5的设备,这是高密度像素比率。
为了在您的应用程序中支持嵌入式HTML5视频,您需要打开硬件加速。
为了支持全屏 - 对于视频或其他HTML内容 - 您需要设置WebChromeClient
并实施onShowCustomView(View, WebChromeClient.CustomViewCallback)
和onHideCustomView()
。 如果缺少这两种方法中的任何一种,则Web内容将不被允许进入全屏。 或者,您可以实施getVideoLoadingProgressView()
来自定义加载视频时显示的视图。
对于面向Android N及更高版本的应用程序(API级别> M
),地理位置api仅在安全来源(如https)上受支持。 对于这样的应用程序,请求在非安全来源上的地理定位API会自动被拒绝,而不会调用相应的onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)
方法。
建议将WebView布局高度设置为固定值,或者设置为MATCH_PARENT
而不是使用WRAP_CONTENT
。 当使用MATCH_PARENT
作为高度时,WebView的父母都不应该使用WRAP_CONTENT
布局高度,因为这可能会导致视图大小不正确。
将WebView的高度设置为 WRAP_CONTENT
可启用以下行为:
KITKAT
and earlier SDKs the HTML viewport meta tag will be ignored in order to preserve backwards compatibility. 不支持使用WRAP_CONTENT
的布局宽度。 如果使用这样的宽度,WebView将尝试使用父宽度。
当用户同意时,WebView可能会将匿名诊断数据上传到Google。 这些数据有助于Google改进WebView。 针对实例化WebView的每个应用程序,基于每个应用程序收集数据。 一个单独的应用程序可以通过在其清单中放置以下标签来退出此功能:
<meta-data android:name="android.webkit.WebView.MetricsOptOut" android:value="true" />
只有在用户同意并且应用程序未选择退出的情况下,数据才会上传给定的应用程序。
Nested classes |
|
---|---|
interface |
WebView.FindListener 接口来侦听查找结果。 |
class |
WebView.HitTestResult
|
interface |
WebView.PictureListener 此接口在API级别12中已弃用。此接口现在已过时。 |
class |
WebView.VisualStateCallback 提供给 |
class |
WebView.WebViewTransport 用于跨线程边界返回WebView的运输对象。 |
Inherited XML attributes |
|
---|---|
From class android.view.ViewGroup
|
|
From class android.view.View
|
Constants |
|
---|---|
String |
SCHEME_GEO 地图地址的URI方案。 |
String |
SCHEME_MAILTO 电子邮件地址的URI方案。 |
String |
SCHEME_TEL 电话号码的URI方案。 |
Inherited constants |
---|
From class android.view.ViewGroup
|
From class android.view.View
|
Inherited fields |
---|
From class android.view.View
|
Public constructors |
|
---|---|
WebView(Context context) 用Context对象构造一个新的WebView。 |
|
WebView(Context context, AttributeSet attrs) 用布局参数构造一个新的WebView。 |
|
WebView(Context context, AttributeSet attrs, int defStyleAttr) 使用布局参数和默认样式构造一个新的WebView。 |
|
WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) 使用布局参数和默认样式构造一个新的WebView。 |
|
WebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) 此构造函数在API级别17中已弃用。私有浏览不再直接通过WebView支持,并且将在未来版本中删除。 喜欢使用 |
Public methods |
|
---|---|
void |
addJavascriptInterface(Object object, String name) 将提供的Java对象注入此WebView。 |
boolean |
canGoBack() 获取此WebView是否具有回退历史项目。 |
boolean |
canGoBackOrForward(int steps) 获取页面是否可以返回或转发给定数量的步骤。 |
boolean |
canGoForward() 获取此WebView是否具有转发历史记录项目。 |
boolean |
canZoomIn() 此方法在API级别17中已弃用。由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢 |
boolean |
canZoomOut() 此方法在API级别17中已弃用。由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢 |
Picture |
capturePicture() 此方法在API级别19中已被弃用。请使用 |
void |
clearCache(boolean includeDiskFiles) 清除资源缓存。 |
static void |
clearClientCertPreferences(Runnable onCleared) 清除为响应继续/取消客户端证书请求而存储的客户端证书首选项。 |
void |
clearFormData() 如果存在,从当前关注的表单域中移除自动填充弹出框。 |
void |
clearHistory() 告诉该WebView清除其内部后退/前进列表。 |
void |
clearMatches() 清除由 |
void |
clearSslPreferences() 清除存储的SSL首选项表,以响应处理SSL证书错误。 |
void |
clearView() 此方法在API级别18中已弃用。使用WebView.loadUrl(“about:blank”)可靠地重置视图状态并释放页面资源(包括任何正在运行的JavaScript)。 |
void |
computeScroll() 由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。 |
WebBackForwardList |
copyBackForwardList() 获取此WebView的WebBackForwardList。 |
PrintDocumentAdapter |
createPrintDocumentAdapter(String documentName) 创建一个PrintDocumentAdapter,提供此Webview的内容以进行打印。 |
PrintDocumentAdapter |
createPrintDocumentAdapter() 此方法在API级别21中已弃用。请使用 |
WebMessagePort[] |
createWebMessageChannel() 创建与JS通信的消息通道并返回表示此消息通道端点的消息端口。 |
void |
destroy() 破坏这个WebView的内部状态。 |
boolean |
dispatchKeyEvent(KeyEvent event) 将关键事件分派到焦点路径上的下一个视图。 |
void |
documentHasImages(Message response) 查询文档以查看它是否包含任何图像引用。 |
static void |
enableSlowWholeDocumentDraw() 对于面向L版本的应用程序,WebView具有新的默认行为,通过智能地选择需要绘制的HTML文档的部分来减少内存占用并提高性能。 |
void |
evaluateJavascript(String script, ValueCallback<String> resultCallback) 在当前显示的页面上下文中异步评估JavaScript。 |
static String |
findAddress(String addr) 获取由物理位置的地址组成的第一个子字符串。 |
int |
findAll(String find) 此方法在API级别16中已被弃用。优选 |
void |
findAllAsync(String find) 在页面上查找所有查找实例,并异步突出显示它们。 |
View |
findFocus() 在当前拥有焦点的此视图中植根的层次结构中查找视图。 |
void |
findNext(boolean forward) 突出显示并滚动到 |
void |
flingScroll(int vx, int vy) |
void |
freeMemory() 此方法在API级别19中已弃用。内存缓存在不再需要时会自动丢弃,并且会响应系统内存压力。 |
CharSequence |
getAccessibilityClassName() 返回此对象的类名称以用于辅助功能。 |
AccessibilityNodeProvider |
getAccessibilityNodeProvider() 获取用于管理以此视图为根的虚拟视图层次结构的提供者,并将其报告给探索窗口内容的 |
SslCertificate |
getCertificate() 获取主要顶级页面的SSL证书,如果没有证书(网站不安全),则返回null。 |
int |
getContentHeight() 获取HTML内容的高度。 |
Bitmap |
getFavicon() 获取当前页面的图标。 |
Handler |
getHandler() |
WebView.HitTestResult |
getHitTestResult() 基于当前游标节点获取HitTestResult。 |
String[] |
getHttpAuthUsernamePassword(String host, String realm) 检索给定主机和领域的HTTP身份验证凭证。 |
String |
getOriginalUrl() 获取当前页面的原始URL。 |
int |
getProgress() 获取当前页面的进度。 |
float |
getScale() 此方法在API级别17中已弃用。由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢 |
WebSettings |
getSettings() 获取用于控制此WebView设置的WebSettings对象。 |
String |
getTitle() 获取当前页面的标题。 |
String |
getUrl() 获取当前页面的URL。 |
void |
goBack() 回到这个WebView的历史。 |
void |
goBackOrForward(int steps) 转到历史项目,该项目是离开当前项目的步骤数目。 |
void |
goForward() 在这个WebView的历史中前进。 |
void |
invokeZoomPicker() 为此WebView调用图形缩放选择器小部件。 |
boolean |
isPrivateBrowsingEnabled() 获取是否在此WebView中启用隐私浏览。 |
void |
loadData(String data, String mimeType, String encoding) 使用“数据”方案URL将给定数据加载到此WebView中。 |
void |
loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) 将给定的数据加载到此WebView中,并使用baseUrl作为内容的基本URL。 |
void |
loadUrl(String url) 加载给定的URL。 |
void |
loadUrl(String url, Map<String, String> additionalHttpHeaders) 使用指定的额外HTTP标头加载给定的URL。 |
void |
onChildViewAdded(View parent, View child) 此方法在API级别8中已弃用.WebView不再需要实现ViewGroup.OnHierarchyChangeListener。 这种方法现在什么都不做。 |
void |
onChildViewRemoved(View p, View child) 此方法在API级别8中已弃用.WebView不再需要实现ViewGroup.OnHierarchyChangeListener。 这种方法现在什么都不做。 |
InputConnection |
onCreateInputConnection(EditorInfo outAttrs) 为InputMethod创建一个新的InputConnection以与视图交互。 |
boolean |
onDragEvent(DragEvent event) 在调用 |
void |
onFinishTemporaryDetach() 在容器完成更改视图后调用 |
boolean |
onGenericMotionEvent(MotionEvent event) 实现此方法来处理通用运动事件。 |
void |
onGlobalFocusChanged(View oldFocus, View newFocus) 此方法在API级别3中已弃用.WebView不应该实现ViewTreeObserver.OnGlobalFocusChangeListener。 这种方法现在什么都不做。 |
boolean |
onHoverEvent(MotionEvent event) 实现此方法来处理悬停事件。 |
boolean |
onKeyDown(int keyCode, KeyEvent event)
|
boolean |
onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) 默认实现 |
boolean |
onKeyUp(int keyCode, KeyEvent event)
|
void |
onPause() 尽力尝试暂停可以安全暂停的任何处理,例如动画和地理位置。 |
void |
onProvideVirtualStructure(ViewStructure structure) 当从视图中检索辅助结构作为 |
void |
onResume() 在先前调用 |
void |
onStartTemporaryDetach() 当一个容器临时将孩子分开时,这被称为 |
boolean |
onTouchEvent(MotionEvent event) 实现此方法来处理触摸屏幕动作事件。 |
boolean |
onTrackballEvent(MotionEvent event) 实现这个方法来处理轨迹球运动事件。 |
void |
onWindowFocusChanged(boolean hasWindowFocus) 当包含此视图的窗口获得或失去焦点时调用。 |
boolean |
overlayHorizontalScrollbar() 此方法在API级别23中已弃用。此方法现在已过时。 |
boolean |
overlayVerticalScrollbar() 此方法在API级别23中已弃用。此方法现在已过时。 |
boolean |
pageDown(boolean bottom) 将此WebView的内容向下滚动页面大小的一半。 |
boolean |
pageUp(boolean top) 将此WebView的内容向上滚动一半视图大小。 |
void |
pauseTimers() 暂停所有WebView的布局,解析和JavaScript定时器。 |
boolean |
performLongClick() 调用此视图的OnLongClickListener(如果已定义)。 |
void |
postUrl(String url, byte[] postData) 使用“POST”方法将postData加载到此WebView中。 |
void |
postVisualStateCallback(long requestId, WebView.VisualStateCallback callback) 发布一个 |
void |
postWebMessage(WebMessage message, Uri targetOrigin) 发布消息到主框架。 |
void |
reload() 重新加载当前的URL。 |
void |
removeJavascriptInterface(String name) 从此WebView中删除以前注入的Java对象。 |
boolean |
requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) 当该组的小孩想要将特定矩形定位到屏幕上时调用。 |
boolean |
requestFocus(int direction, Rect previouslyFocusedRect) 调用此方法可试图将焦点放在特定视图或其后面的某个子视图上,并提供关于焦点来自的方向和特定矩形的提示。 寻找一种观点,重点关注 |
void |
requestFocusNodeHref(Message hrefMsg) 请求最后一个点击点处的定位点或图片元素网址。 |
void |
requestImageRef(Message msg) 请求用户最后触摸的图像的URL。 |
WebBackForwardList |
restoreState(Bundle inState) 从给定的Bundle中恢复此WebView的状态。 |
void |
resumeTimers() 恢复所有WebView的所有布局,解析和JavaScript计时器。 |
void |
savePassword(String host, String username, String password) 此方法在API级别18中已弃用。将来的版本不支持在WebView中保存密码。 |
WebBackForwardList |
saveState(Bundle outState) 保存 |
void |
saveWebArchive(String filename) 将当前视图保存为Web存档。 |
void |
saveWebArchive(String basename, boolean autoname, ValueCallback<String> callback) 将当前视图保存为Web存档。 |
void |
setBackgroundColor(int color) 设置此视图的背景颜色。 |
void |
setCertificate(SslCertificate certificate) 此方法在API级别17中已被弃用。调用此函数没有用处,并且在将来的发行版中将被忽略。 |
void |
setDownloadListener(DownloadListener listener) 当渲染引擎无法处理内容时注册要使用的接口,并且应该下载。 |
void |
setFindListener(WebView.FindListener listener) 注册侦听器以通知页面查找操作进度。 |
void |
setHorizontalScrollbarOverlay(boolean overlay) 此方法在API级别23中已弃用。此方法不起作用。 |
void |
setHttpAuthUsernamePassword(String host, String realm, String username, String password) 存储给定主机和领域的HTTP身份验证凭证。 |
void |
setInitialScale(int scaleInPercent) 设置此WebView的初始缩放比例。 |
void |
setLayerType(int layerType, Paint paint) 指定支持此视图的图层的类型。 |
void |
setLayoutParams(ViewGroup.LayoutParams params) 设置与此视图关联的布局参数。 |
void |
setMapTrackballToArrowKeys(boolean setMap) 此方法在API级别17中已被弃用。未来版本中仅支持默认情况下的true。 |
void |
setNetworkAvailable(boolean networkUp) 通知WebView的网络状态。 |
void |
setOverScrollMode(int mode) 为此视图设置过卷模式。 |
void |
setPictureListener(WebView.PictureListener listener) 此方法在API级别12中已弃用。此方法现在已过时。 |
void |
setScrollBarStyle(int style) 指定滚动条的样式。 |
void |
setVerticalScrollbarOverlay(boolean overlay) 此方法在API级别23中已弃用。此方法不起作用。 |
void |
setWebChromeClient(WebChromeClient client) 设置chrome处理程序。 |
static void |
setWebContentsDebuggingEnabled(boolean enabled) 启用加载到此应用程序的任何WebView中的Web内容(HTML / CSS / JavaScript)调试。 |
void |
setWebViewClient(WebViewClient client) 设置将接收各种通知和请求的WebViewClient。 |
boolean |
shouldDelayChildPressedState() 如果应该延迟此ViewGroup的子项或后代的按下状态,则返回true。 |
boolean |
showFindDialog(String text, boolean showIme) 此方法在API级别18中已弃用。此方法在所有Android版本上无法可靠运行; 使用WebView.findAllAsync()实现自定义查找对话框提供了更强大的解决方案。 |
void |
stopLoading() 停止当前的负载。 |
void |
zoomBy(float zoomFactor) 在此WebView中执行缩放操作。 |
boolean |
zoomIn() 在此WebView中执行放大。 |
boolean |
zoomOut() 在此WebView中执行缩小。 |
Protected methods |
|
---|---|
int |
computeHorizontalScrollOffset() 计算水平滚动条拇指在水平范围内的水平偏移量。 |
int |
computeHorizontalScrollRange() 计算水平滚动条代表的水平范围。 |
int |
computeVerticalScrollExtent() 计算垂直滚动条拇指在垂直范围内的垂直范围。 |
int |
computeVerticalScrollOffset() 计算垂直滚动条拇指在水平范围内的垂直偏移量。 |
int |
computeVerticalScrollRange() 计算垂直滚动条代表的垂直范围。 |
void |
dispatchDraw(Canvas canvas) 通过绘制来绘制子视图。 |
void |
onAttachedToWindow() 这在视图附加到窗口时被调用。 |
void |
onConfigurationChanged(Configuration newConfig) 当应用程序使用的资源的当前配置发生更改时调用。 |
void |
onDraw(Canvas canvas) 实施这个来做你的绘画。 |
void |
onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) 当视图的焦点状态改变时,由视图系统调用。 |
void |
onMeasure(int widthMeasureSpec, int heightMeasureSpec) 测量视图及其内容以确定测量宽度和测量高度。 |
void |
onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) 由 |
void |
onScrollChanged(int l, int t, int oldl, int oldt) 这是为了响应此视图中的内部滚动而调用的(即视图滚动了其自己的内容)。 |
void |
onSizeChanged(int w, int h, int ow, int oh) 当这个视图的大小发生变化时,这在布局期间被调用。 |
void |
onVisibilityChanged(View changedView, int visibility) 当视图的可见性或视图的祖先已更改时调用。 |
void |
onWindowVisibilityChanged(int visibility) |
Inherited methods |
|
---|---|
From class android.widget.AbsoluteLayout
|
|
From class android.view.ViewGroup
|
|
From class android.view.View
|
|
From class java.lang.Object
|
|
From interface android.view.ViewParent
|
|
From interface android.view.ViewManager
|
|
From interface android.graphics.drawable.Drawable.Callback
|
|
From interface android.view.KeyEvent.Callback
|
|
From interface android.view.accessibility.AccessibilityEventSource
|
|
From interface android.view.ViewTreeObserver.OnGlobalFocusChangeListener
|
|
From interface android.view.ViewGroup.OnHierarchyChangeListener
|
WebView (Context context)
用Context对象构造一个新的WebView。
Parameters | |
---|---|
context |
Context : a Context object used to access application assets |
WebView (Context context, AttributeSet attrs)
用布局参数构造一个新的WebView。
Parameters | |
---|---|
context |
Context : a Context object used to access application assets |
attrs |
AttributeSet : an AttributeSet passed to our parent |
WebView (Context context, AttributeSet attrs, int defStyleAttr)
使用布局参数和默认样式构造一个新的WebView。
Parameters | |
---|---|
context |
Context : a Context object used to access application assets |
attrs |
AttributeSet : an AttributeSet passed to our parent |
defStyleAttr |
int : an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults. |
WebView (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
使用布局参数和默认样式构造一个新的WebView。
Parameters | |
---|---|
context |
Context : a Context object used to access application assets |
attrs |
AttributeSet : an AttributeSet passed to our parent |
defStyleAttr |
int : an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults. |
defStyleRes |
int : a resource identifier of a style resource that supplies default values for the view, used only if defStyleAttr is 0 or can not be found in the theme. Can be 0 to not look for defaults. |
WebView (Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing)
此构造函数在API级别17中已被弃用。
私人浏览不再直接通过WebView支持,并且将在未来版本中删除。 喜欢使用WebSettings
, WebViewDatabase
, CookieManager
和WebStorage
对隐私数据的细粒度控制。
使用布局参数和默认样式构造一个新的WebView。
Parameters | |
---|---|
context |
Context : a Context object used to access application assets |
attrs |
AttributeSet : an AttributeSet passed to our parent |
defStyleAttr |
int : an attribute in the current theme that contains a reference to a style resource that supplies default values for the view. Can be 0 to not look for defaults. |
privateBrowsing |
boolean : whether this WebView will be initialized in private mode |
void addJavascriptInterface (Object object, String name)
将提供的Java对象注入此WebView。 该对象使用提供的名称注入主框架的JavaScript上下文中。 这允许从JavaScript访问Java对象的方法。 对于面向API级别JELLY_BEAN_MR1
及以上的应用程序,只能通过JavaScript访问用JavascriptInterface
注释的公共方法。 对于面向API级别JELLY_BEAN
或更低级别的应用程序,可以访问所有公共方法(包括继承的方法),有关含义,请参阅下面的重要安全说明。
请注意,注入的对象在下次(重新)加载页面之前不会出现在JavaScript中。 例如:
class JsObject { @JavascriptInterface public String toString() { return "injectedObject"; } } webView.addJavascriptInterface(new JsObject(), "injectedObject"); webView.loadData("- Android中文版 - API参考文档 ", "text/html", null); webView.loadUrl("javascript:alert(injectedObject.toString())");
重要:
JELLY_BEAN
or earlier. Apps that target a version later than JELLY_BEAN
are still vulnerable if the app runs on a device running Android earlier than 4.2. The most secure way to use this method is to target JELLY_BEAN_MR1
and to ensure the method is called only when running on Android 4.2 or later. With these older versions, JavaScript could use reflection to access an injected object's public fields. Use of this method in a WebView containing untrusted content could allow an attacker to manipulate the host application in unintended ways, executing Java code with the permissions of the host application. Use extreme care when using this method in a WebView which could contain untrusted content.LOLLIPOP
and above, methods of injected Java objects are enumerable from JavaScript.Parameters | |
---|---|
object |
Object : the Java object to inject into this WebView's JavaScript context. Null values are ignored. |
name |
String : the name used to expose the object in JavaScript |
boolean canGoBack ()
获取此WebView是否具有回退历史项目。
Returns | |
---|---|
boolean |
true iff this WebView has a back history item |
boolean canGoBackOrForward (int steps)
获取页面是否可以返回或转发给定数量的步骤。
Parameters | |
---|---|
steps |
int : the negative or positive number of steps to move the history |
Returns | |
---|---|
boolean |
boolean canGoForward ()
获取此WebView是否具有转发历史记录项目。
Returns | |
---|---|
boolean |
true iff this Webview has a forward history item |
boolean canZoomIn ()
此方法在API级别17中已弃用。
由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢onScaleChanged(WebView, float, float)
。
获取此WebView是否可以放大。
Returns | |
---|---|
boolean |
true if this WebView can be zoomed in |
boolean canZoomOut ()
此方法在API级别17中已弃用。
由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢onScaleChanged(WebView, float, float)
。
获取此WebView是否可以缩小。
Returns | |
---|---|
boolean |
true if this WebView can be zoomed out |
Picture capturePicture ()
此方法在API级别19中已被弃用。
使用onDraw(Canvas)
获取WebView的位图快照,或者saveWebArchive(String)
将内容保存到文件。
获取捕获此WebView当前内容的新图片。 该图片是正在显示的整个文档,并不限于此WebView当前显示的区域。 此外,图片是一个静态副本,不受稍后对所显示内容的更改的影响。
请注意,由于内部更改,对于 HONEYCOMB
和 ICE_CREAM_SANDWICH
之间的API级别,图片不包含固定位置元素或可滚动div。
请注意,从JELLY_BEAN_MR1
,返回的图片只能绘制到位图支持的Canvas中 - 使用任何其他类型的Canvas将涉及额外的转换,但需要花费内存和性能。 返回的对象不支持createFromStream(InputStream)
和writeToStream(OutputStream)
方法。
Returns | |
---|---|
Picture |
a picture that captures the current contents of this WebView |
void clearCache (boolean includeDiskFiles)
清除资源缓存。 请注意,缓存是按应用程序进行的,因此这将清除所有使用的WebView的缓存。
Parameters | |
---|---|
includeDiskFiles |
boolean : if false, only the RAM cache is cleared |
void clearClientCertPreferences (Runnable onCleared)
清除为响应继续/取消客户端证书请求而存储的客户端证书首选项。 请注意,Webview会在收到ACTION_STORAGE_CHANGED
意图时自动清除这些首选项。 首选项由嵌入式应用程序创建的所有网页浏览共享。
Parameters | |
---|---|
onCleared |
Runnable : A runnable to be invoked when client certs are cleared. The embedder can pass null if not interested in the callback. The runnable will be called in UI thread. |
void clearFormData ()
如果存在,从当前关注的表单域中移除自动填充弹出框。 请注意,这只会影响自动填充弹出窗口的显示,它不会从此WebView的存储中移除任何已保存的表单数据。 要做到这一点,请使用clearFormData()
。
void clearView ()
此方法在API级别18中已被弃用。
使用WebView.loadUrl(“about:blank”)可靠地重置视图状态并释放页面资源(包括任何正在运行的JavaScript)。
清除此WebView,以便onDraw()只会绘制白色背景,如果MeasureSpec不是MeasureSpec.EXACTLY,onMeasure()将返回0。
void computeScroll ()
由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。 如果孩子使用Scroller
对象动画滚动,通常会执行此操作。
WebBackForwardList copyBackForwardList ()
获取此WebView的WebBackForwardList。 这包含用于查询历史堆栈中的每个项目的后退/前进列表。 这是私人WebBackForwardList的副本,因此它只包含当前状态的快照。 多次调用此方法可能会返回不同的对象。 从此方法返回的对象将不会更新以反映任何新状态。
Returns | |
---|---|
WebBackForwardList |
PrintDocumentAdapter createPrintDocumentAdapter (String documentName)
创建一个PrintDocumentAdapter,提供此Webview的内容以进行打印。 该适配器通过将Webview内容转换为PDF流来工作。 Webview无法在转换过程中绘制 - 任何这样的绘制都是未定义的。 建议使用专用的非屏幕Webview进行打印。 如有必要,应用程序可能会暂时隐藏可见的WebView,方法是使用包装在返回的对象周围的自定义PrintDocumentAdapter实例并观察onStart和onFinish方法。 有关更多信息,请参阅PrintDocumentAdapter
。
Parameters | |
---|---|
documentName |
String : The user-facing name of the printed document. See PrintDocumentInfo |
Returns | |
---|---|
PrintDocumentAdapter |
PrintDocumentAdapter createPrintDocumentAdapter ()
此方法在API级别21中已弃用。
使用createPrintDocumentAdapter(String)
,它要求用户提供打印文档名称。
Returns | |
---|---|
PrintDocumentAdapter |
WebMessagePort[] createWebMessageChannel ()
创建与JS通信的消息通道并返回表示此消息通道端点的消息端口。 HTML5消息通道功能描述为here
返回的消息通道纠缠并已处于启动状态。
Returns | |
---|---|
WebMessagePort[] |
the two message ports that form the message channel. |
void destroy ()
破坏这个WebView的内部状态。 在从视图系统中删除此WebView后,应该调用此方法。 破坏后,此WebView上不会调用其他方法。
boolean dispatchKeyEvent (KeyEvent event)
将关键事件分派到焦点路径上的下一个视图。 此路径从视图树的顶部向下延伸到当前聚焦的视图。 如果这个观点有重点,它会发送给自己。 否则,它将沿着焦点路径调度下一个节点。 这个方法也会触发任何关键的监听器。
Parameters | |
---|---|
event |
KeyEvent : The key event to be dispatched. |
Returns | |
---|---|
boolean |
True if the event was handled, false otherwise. |
void documentHasImages (Message response)
查询文档以查看它是否包含任何图像引用。 如果找到图像,则会将arg1设置为1,如果文档未引用任何图像,则将调度消息对象。
Parameters | |
---|---|
response |
Message : the message that will be dispatched with the result |
void enableSlowWholeDocumentDraw ()
对于面向L版本的应用程序,WebView具有新的默认行为,通过智能地选择需要绘制的HTML文档的部分来减少内存占用并提高性能。 这些优化对开发者来说是透明的。 但是,在某些情况下,应用程序开发人员可能希望禁用它们:
onDraw(Canvas)
to do own drawing and accesses portions of the page that is way outside the visible portion of the page.capturePicture()
to capture a very large HTML document. Note that capturePicture is a deprecated API.void evaluateJavascript (String script, ValueCallback<String> resultCallback)
在当前显示的页面上下文中异步评估JavaScript。 如果非null,| resultCallback | 将从该执行中返回的任何结果被调用。 必须在UI线程上调用此方法,并且将在UI线程上进行回调。
兼容性说明。 针对N
或更高版本的应用程序,来自空WebView的JavaScript状态不再像loadUrl(String)
那样在导航中持续存在。 例如,调用loadUrl(String)
之前定义的全局变量和函数将不存在于加载的页面中。 应用程序应该使用addJavascriptInterface(Object, String)
来代替在导航中保留JavaScript对象。
Parameters | |
---|---|
script |
String : the JavaScript to execute. |
resultCallback |
ValueCallback : A callback to be invoked when the script execution completes with the result of the execution (if any). May be null if no notificaion of the result is required. |
String findAddress (String addr)
获取由物理位置的地址组成的第一个子字符串。 目前,只有在美国的地址被检测到,并且包括:
Parameters | |
---|---|
addr |
String : the string to search for addresses |
Returns | |
---|---|
String |
the address, or if no address is found, null |
int findAll (String find)
此方法在API级别16中已被弃用。
findAllAsync(String)
是首选。
在页面上查找所有查找实例并突出显示它们。 通知任何注册的WebView.FindListener
。
Parameters | |
---|---|
find |
String : the string to find |
Returns | |
---|---|
int |
the number of occurances of the String "find" that were found |
void findAllAsync (String find)
在页面上查找所有查找实例,并异步突出显示它们。 通知任何注册的WebView.FindListener
。 对此的连续呼叫将取消所有待处理的搜索。
Parameters | |
---|---|
find |
String : the string to find. |
View findFocus ()
在当前拥有焦点的此视图中植根的层次结构中查找视图。
Returns | |
---|---|
View |
The view that currently has focus, or null if no focused view can be found. |
void findNext (boolean forward)
突出显示并滚动到findAllAsync(String)
找到的下一个匹配项, findAllAsync(String)
根据需要环绕页面边界。 通知任何注册的WebView.FindListener
。 如果findAllAsync(String)
没有被调用,又或如果clearMatches()
自上次查找操作已被调用,这个函数什么也不做。
Parameters | |
---|---|
forward |
boolean : the direction to search |
void freeMemory ()
此方法在API级别19中已被弃用。
内存缓存在不再需要时会自动丢弃,并响应系统内存压力。
通知此WebView内存不足以释放任何可用内存。
CharSequence getAccessibilityClassName ()
返回此对象的类名称以用于辅助功能。 如果子类正在实现的东西应该被视为一个全新的视图类,当它被可访问性使用时,子类只应该覆盖这个子类,与它所源自的类无关。 这是用来填写AccessibilityNodeInfo.setClassName
。
Returns | |
---|---|
CharSequence |
AccessibilityNodeProvider getAccessibilityNodeProvider ()
获取用于管理以此视图为根的虚拟视图层次结构的提供者,并将其报告给探索窗口内容的 AccessibilityService
。
如果此方法返回一个实例,则此实例负责管理描述以此View为根的虚拟子树的AccessibilityNodeInfo
,其中包括代表视图本身的虚拟子树。 同样,返回的实例负责在任何虚拟视图或根视图本身上执行辅助功能操作。
如果 View.AccessibilityDelegate
已通过调用指定 setAccessibilityDelegate(AccessibilityDelegate)
其 getAccessibilityNodeProvider(View)
负责处理此调用。
Returns | |
---|---|
AccessibilityNodeProvider |
The provider. |
SslCertificate getCertificate ()
获取主要顶级页面的SSL证书,如果没有证书(网站不安全),则返回null。
Returns | |
---|---|
SslCertificate |
the SSL certificate for the main top-level page |
int getContentHeight ()
获取HTML内容的高度。
Returns | |
---|---|
int |
the height of the HTML content |
Bitmap getFavicon ()
获取当前页面的图标。 在调用WebViewClient.onReceivedIcon之前,这是当前页面的图标。
Returns | |
---|---|
Bitmap |
the favicon for the current page |
Handler getHandler ()
Returns | |
---|---|
Handler |
A handler associated with the thread running the View. This handler can be used to pump events in the UI events queue. |
WebView.HitTestResult getHitTestResult ()
基于当前游标节点获取HitTestResult。 如果找到HTML :: a标记并且锚点具有非JavaScript URL,则HitTestResult类型将设置为SRC_ANCHOR_TYPE,并在“extra”字段中设置URL。 如果该锚点没有URL或者它是JavaScript URL,则该类型将为UNKNOWN_TYPE,并且该URL必须通过requestFocusNodeHref(Message)
异步检索。 如果找到HTML :: img标签,则将HitTestResult类型设置为IMAGE_TYPE,并在“extra”字段中设置URL。 一种类型的SRC_IMAGE_ANCHOR_TYPE指示具有将图像作为子节点的URL的锚点。 如果找到电话号码,则HitTestResult类型设置为PHONE_TYPE,并且电话号码在HitTestResult的“extra”字段中设置。 如果找到地图地址,则HitTestResult类型设置为GEO_TYPE,并且地址在HitTestResult的“extra”字段中设置。 如果找到电子邮件地址,则HitTestResult类型设置为EMAIL_TYPE,并且电子邮件设置在HitTestResult的“extra”字段中。 否则,HitTestResult类型设置为UNKNOWN_TYPE。
Returns | |
---|---|
WebView.HitTestResult |
String[] getHttpAuthUsernamePassword (String host, String realm)
检索给定主机和领域的HTTP身份验证凭证。 此方法旨在与onReceivedHttpAuthRequest(WebView, HttpAuthHandler, String, String)
一起使用。
Parameters | |
---|---|
host |
String : the host to which the credentials apply |
realm |
String : the realm to which the credentials apply |
Returns | |
---|---|
String[] |
the credentials as a String array, if found. The first element is the username and the second element is the password. Null if no credentials are found. |
String getOriginalUrl ()
获取当前页面的原始URL。 这并不总是与传递给WebViewClient.onPageStarted的URL相同,因为尽管该URL的负载已经开始,但当前页面可能尚未更改。 此外,可能会有重定向导致与最初请求的URL不同。
Returns | |
---|---|
String |
the URL that was originally requested for the current page |
int getProgress ()
获取当前页面的进度。
Returns | |
---|---|
int |
the progress for the current page between 0 and 100 |
float getScale ()
此方法在API级别17中已弃用。
由于Web渲染和UI线程之间的竞争条件,此方法容易出现不准确性; 更喜欢onScaleChanged(WebView, float, float)
。
获取此WebView的当前比例。
Returns | |
---|---|
float |
the current scale |
WebSettings getSettings ()
获取用于控制此WebView设置的WebSettings对象。
Returns | |
---|---|
WebSettings |
a WebSettings object that can be used to control this WebView's settings |
String getTitle ()
获取当前页面的标题。 这是调用WebViewClient.onReceivedTitle之前当前页面的标题。
Returns | |
---|---|
String |
the title for the current page |
String getUrl ()
获取当前页面的URL。 这并不总是与传递给WebViewClient.onPageStarted的URL相同,因为尽管该URL的负载已经开始,但当前页面可能尚未更改。
Returns | |
---|---|
String |
the URL for the current page |
void goBackOrForward (int steps)
转到历史项目,该项目是离开当前项目的步骤数目。 如果前进,步骤是否定的,并且是积极的。
Parameters | |
---|---|
steps |
int : the number of steps to take back or forward in the back forward list |
void invokeZoomPicker ()
为此WebView调用图形缩放选择器小部件。 这将导致缩放小部件出现在屏幕上以控制此WebView的缩放级别。
boolean isPrivateBrowsingEnabled ()
获取是否在此WebView中启用隐私浏览。
Returns | |
---|---|
boolean |
void loadData (String data, String mimeType, String encoding)
使用“数据”方案URL将给定数据加载到此WebView中。
请注意,JavaScript的相同源策略意味着使用此方法加载的页面中运行的脚本将无法访问使用'data'之外的任何方案加载的内容,包括'http(s)'。 为避免此限制,请使用loadDataWithBaseURL()
以及适当的基本URL。
编码参数指定数据是base64还是URL编码。 如果数据是base64编码的,则编码参数的值必须是'base64'。 对于参数的所有其他值(包括空值),假定数据对安全URL字符范围内的八位字节使用ASCII编码,并对该范围外的八位字节使用标准的%xx十六进制URL编码。 例如, '#', '%', '\', '?' 应分别替换为%23,%25,%27,%3f。
由该方法形成的'data'scheme URL使用默认的US-ASCII字符集。 如果您需要设置不同的字符集,则应该在URL的loadUrl(String)
部分中形成一个“数据”方案URL,并明确指定字符集参数,然后调用loadUrl(String)
。 请注意,从数据URL的媒体类型部分获取的字符集总是会覆盖HTML或XML文档本身中指定的字符集。
Parameters | |
---|---|
data |
String : a String of data in the given encoding |
mimeType |
String : the MIME type of the data, e.g. 'text/html' |
encoding |
String : the encoding of the data |
void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
将给定的数据加载到此WebView中,并使用baseUrl作为内容的基本URL。 基本URL既用于解析相对URL,也用于应用JavaScript的相同源策略。 historyUrl用于历史记录。
请注意,只有当baseUrl指定了'http','https','ftp','ftps','about'或'javascript'以外的方案时,以这种方式指定的内容才可以访问本地设备文件(通过“文件”方案URL) ”。
如果基本URL使用数据方案,则此方法相当于调用loadData()
并忽略historyUrl,并将数据视为data:URL的一部分。 如果基本URL使用任何其他方案,那么数据将作为普通字符串(即不是数据URL的一部分)加载到WebView中,并且字符串中的任何URL编码实体都不会被解码。
请注意,在请求使用此方法加载的页面的子资源(图像等)时,baseUrl在“Referer”HTTP标头中发送。
Parameters | |
---|---|
baseUrl |
String : the URL to use as the page's base URL. If null defaults to 'about:blank'. |
data |
String : a String of data in the given encoding |
mimeType |
String : the MIMEType of the data, e.g. 'text/html'. If null, defaults to 'text/html'. |
encoding |
String : the encoding of the data |
historyUrl |
String : the URL to use as the history entry. If null defaults to 'about:blank'. If non-null, this must be a valid URL. |
void loadUrl (String url)
加载给定的URL。
另请参阅 evaluateJavascript(String, ValueCallback
上的兼容性说明。
Parameters | |
---|---|
url |
String : the URL of the resource to load |
void loadUrl (String url, Map<String, String> additionalHttpHeaders)
使用指定的额外HTTP标头加载给定的URL。
另请参阅 evaluateJavascript(String, ValueCallback
上的兼容性说明。
Parameters | |
---|---|
url |
String : the URL of the resource to load |
additionalHttpHeaders |
Map : the additional headers to be used in the HTTP request for this URL, specified as a map from name to value. Note that if this map contains any of the headers that are set by default by this WebView, such as those controlling caching, accept types or the User-Agent, their values may be overriden by this WebView's defaults. |
void onChildViewAdded (View parent, View child)
此方法在API级别8中已被弃用。
WebView不再需要实现ViewGroup.OnHierarchyChangeListener。 这种方法现在什么都不做。
当新的孩子被添加到父视图时调用。
Parameters | |
---|---|
parent |
View : the view in which a child was added |
child |
View : the new child view added in the hierarchy |
void onChildViewRemoved (View p, View child)
此方法在API级别8中已被弃用。
WebView不再需要实现ViewGroup.OnHierarchyChangeListener。 这种方法现在什么都不做。
当孩子从父视图中移除时调用。
Parameters | |
---|---|
p |
View : the view from which the child was removed |
child |
View : the child removed from the hierarchy |
InputConnection onCreateInputConnection (EditorInfo outAttrs)
为InputMethod创建一个新的InputConnection以与视图交互。 默认实现返回null,因为它不支持输入方法。 你可以重写这个来实现这种支持。 这只是需要重点和文字输入的视图才需要。
当实现这个时,你可能也想实现 onCheckIsTextEditor()
来表明你将返回一个非null的InputConnection。
另外,要小心地正确填写EditorInfo
对象,以便连接的IME可以依赖其值。 例如,必须使用正确的光标位置填写initialSelStart
和initialSelEnd
成员,以便IME正确地与您的应用程序一起工作。
Parameters | |
---|---|
outAttrs |
EditorInfo : Fill in with attribute information about the connection. |
Returns | |
---|---|
InputConnection |
boolean onDragEvent (DragEvent event)
在调用 startDragAndDrop()
之后,处理由系统发送的拖动事件。
当系统调用这个方法时,它传递一个DragEvent
对象。 调用getAction()
返回DragEvent中定义的动作类型常量之一。 该方法使用这些来确定拖放操作中发生了什么。
Parameters | |
---|---|
event |
DragEvent : The DragEvent sent by the system. The getAction() method returns an action type constant defined in DragEvent, indicating the type of drag event represented by this object. |
Returns | |
---|---|
boolean |
true if the method was successful, otherwise false . 该方法应该返回 该方法还应该返回 |
void onFinishTemporaryDetach ()
当容器完成更改视图后调用 onStartTemporaryDetach()
后。
boolean onGenericMotionEvent (MotionEvent event)
实现此方法来处理通用运动事件。
通用运动事件描述操纵杆运动,鼠标悬停,触控板触摸,滚轮运动和其他输入事件。 运动事件的source
指定接收的输入类别。 此方法的实现必须在处理事件之前检查源中的位。 以下代码示例显示了这是如何完成的。
带有源类SOURCE_CLASS_POINTER
通用运动事件被传递到指针下的视图。 所有其他通用运动事件都会传送到重点视图。
public boolean onGenericMotionEvent(MotionEvent event) { if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) { if (event.getAction() == MotionEvent.ACTION_MOVE) { // process the joystick movement... return true; } } if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) { switch (event.getAction()) { case MotionEvent.ACTION_HOVER_MOVE: // process the mouse hover movement... return true; case MotionEvent.ACTION_SCROLL: // process the scroll wheel movement... return true; } } return super.onGenericMotionEvent(event); }
Parameters | |
---|---|
event |
MotionEvent : The generic motion event being processed. |
Returns | |
---|---|
boolean |
True if the event was handled, false otherwise. |
void onGlobalFocusChanged (View oldFocus, View newFocus)
此方法在API级别3中已被弃用。
WebView不应该实现ViewTreeObserver.OnGlobalFocusChangeListener。 这种方法现在什么都不做。
在焦点在视图树中更改时调用的回调方法。 当视图树从触摸模式转换为非触摸模式时,oldFocus为空。 当视图树从非触摸模式转换为触摸模式时,newFocus为null。 当焦点在非触摸模式下改变(没有从或转换到触摸模式时),oldFocus或newFocus可以为空。
Parameters | |
---|---|
oldFocus |
View : The previously focused view, if any. |
newFocus |
View : The newly focused View, if any. |
boolean onHoverEvent (MotionEvent event)
实现此方法来处理悬停事件。
只要指针悬停在视图边界之上或之外,并且该视图当前未被触摸,就会调用此方法。 悬停事件被表示为具有动作指针事件ACTION_HOVER_ENTER
, ACTION_HOVER_MOVE
,或ACTION_HOVER_EXIT
。
ACTION_HOVER_ENTER
when the pointer enters the bounds of the view.ACTION_HOVER_MOVE
when the pointer has already entered the bounds of the view and has moved.ACTION_HOVER_EXIT
when the pointer has exited the bounds of the view or when the pointer is about to go down due to a button click, tap, or similar user action that causes the view to be touched.该视图应实现此方法以返回true以指示它正在处理悬停事件,例如通过更改其可绘制状态。
如果视图已启用且可点击,默认实现将调用setHovered(boolean)
以在收到悬停输入或悬停退出事件时更新视图的悬停状态。 默认实现也发送悬停可访问性事件。
Parameters | |
---|---|
event |
MotionEvent : The motion event that describes the hover. |
Returns | |
---|---|
boolean |
True if the view handled the hover event. |
boolean onKeyDown (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyDown()
默认实现:当 KEYCODE_DPAD_CENTER
或 KEYCODE_ENTER
被释放时,如果视图被启用并且可点击,则执行按下视图。
软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。
Parameters | |
---|---|
keyCode |
int : a key code that represents the button pressed, from KeyEvent |
event |
KeyEvent : the KeyEvent object that defines the button action |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
默认实现 KeyEvent.Callback.onKeyMultiple()
:始终返回false(不处理事件)。
软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。
Parameters | |
---|---|
keyCode |
int : A key code that represents the button pressed, from KeyEvent . |
repeatCount |
int : The number of times the action was made. |
event |
KeyEvent : The KeyEvent object that defines the button action. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
boolean onKeyUp (int keyCode, KeyEvent event)
的默认实现 KeyEvent.Callback.onKeyUp()
:当视图进行点击 KEYCODE_DPAD_CENTER
, KEYCODE_ENTER
或者 KEYCODE_SPACE
被释放。
软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。
Parameters | |
---|---|
keyCode |
int : A key code that represents the button pressed, from KeyEvent . |
event |
KeyEvent : The KeyEvent object that defines the button action. |
Returns | |
---|---|
boolean |
If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false. |
void onPause ()
尽力尝试暂停可以安全暂停的任何处理,例如动画和地理位置。 请注意,此调用不会暂停JavaScript。 要全局暂停JavaScript,请使用pauseTimers()
。 要恢复WebView,请致电onResume()
。
void onProvideVirtualStructure (ViewStructure structure)
当从视图中检索辅助结构作为Activity.onProvideAssistData
一部分Activity.onProvideAssistData
以在此视图下生成其他虚拟结构时调用。 defaullt实现使用getAccessibilityNodeProvider()
尝试从视图的虚拟可访问性节点(如果有)中生成该节点。 您可以覆盖此提供此数据的更优化实施。
Parameters | |
---|---|
structure |
ViewStructure
|
void onStartTemporaryDetach ()
当一个容器临时将孩子分开时,这被称为ViewGroup.detachViewFromParent
。 当容器完成后, onFinishTemporaryDetach()
跟随onFinishTemporaryDetach()
或onDetachedFromWindow()
。
boolean onTouchEvent (MotionEvent event)
实现此方法来处理触摸屏幕动作事件。
如果使用此方法检测点击操作,建议通过执行并调用performClick()
来执行操作。 这将确保一致的系统行为,包括:
ACTION_CLICK
when accessibility features are enabled Parameters | |
---|---|
event |
MotionEvent : The motion event. |
Returns | |
---|---|
boolean |
True if the event was handled, false otherwise. |
boolean onTrackballEvent (MotionEvent event)
实现这个方法来处理轨迹球运动事件。 自上次事件后轨迹球的相对移动可以通过MotionEvent.getX()
和MotionEvent.getY()
进行检索。 这些都是标准化的,因此移动1对应于用户按下一个DPAD键(所以它们通常是小数值,表示轨迹球中可用的更细粒度的移动信息)。
Parameters | |
---|---|
event |
MotionEvent : The motion event. |
Returns | |
---|---|
boolean |
True if the event was handled, false otherwise. |
void onWindowFocusChanged (boolean hasWindowFocus)
当包含此视图的窗口获得或失去焦点时调用。 请注意,这与视图焦点不同:要接收关键事件,视图和其窗口都必须具有焦点。 如果一个窗口显示在需要输入焦点的窗口上,那么您自己的窗口将失去焦点,但视图焦点将保持不变。
Parameters | |
---|---|
hasWindowFocus |
boolean : True if the window containing this view now has focus, false otherwise. |
boolean overlayHorizontalScrollbar ()
此方法在API级别23中已弃用。
这种方法现在已经过时了。
获取水平滚动条是否具有叠加样式。
Returns | |
---|---|
boolean |
true |
boolean overlayVerticalScrollbar ()
此方法在API级别23中已弃用。
这种方法现在已经过时了。
获取垂直滚动条是否具有叠加样式。
Returns | |
---|---|
boolean |
false |
boolean pageDown (boolean bottom)
将此WebView的内容向下滚动页面大小的一半。
Parameters | |
---|---|
bottom |
boolean : true to jump to bottom of page |
Returns | |
---|---|
boolean |
true if the page was scrolled |
boolean pageUp (boolean top)
将此WebView的内容向上滚动一半视图大小。
Parameters | |
---|---|
top |
boolean : true to jump to the top of the page |
Returns | |
---|---|
boolean |
true if the page was scrolled |
void pauseTimers ()
暂停所有WebView的布局,解析和JavaScript定时器。 这是一个全局请求,并不局限于这个WebView。 如果应用程序已暂停,这可能很有用。
boolean performLongClick ()
调用此视图的OnLongClickListener(如果已定义)。 如果OnLongClickListener没有使用该事件,则调用上下文菜单。
Returns | |
---|---|
boolean |
true if one of the above receivers consumed the event, false otherwise |
void postUrl (String url, byte[] postData)
使用“POST”方法将postData加载到此WebView中。 如果url不是网络URL,它将被加载loadUrl(String)
而忽略postData参数。
Parameters | |
---|---|
url |
String : the URL of the resource to load |
postData |
byte : the data will be passed to "POST" request, which must be be "application/x-www-form-urlencoded" encoded. |
void postVisualStateCallback (long requestId, WebView.VisualStateCallback callback)
发布一个 WebView.VisualStateCallback
,当WebView的当前状态准备好绘制时将会调用它。
因为对DOM的更新是异步处理的,所以对DOM的更新可能不会立即通过后续的onDraw(Canvas)
调用来直观反映。 WebView.VisualStateCallback
提供了一种机制,在当前时间DOM的内容准备好在WebView
下一次绘制时绘制时通知调用者。
回调完成后的下一个绘制保证将DOM的所有更新反映到 WebView.VisualStateCallback
发布点,但它也可能包含在回调发布后应用的更新。
此API涵盖的DOM的状态包括以下内容:
为了保证 WebView
将在调用 onComplete(long)
方法后成功渲染第一帧,必须满足以下条件:
WebView
's visibility is set to VISIBLE
then the WebView
must be attached to the view hierarchy.WebView
's visibility is set to INVISIBLE
then the WebView
must be attached to the view hierarchy and must be made VISIBLE
from the onComplete(long)
method.WebView
's visibility is set to GONE
then the WebView
must be attached to the view hierarchy and its LayoutParams
's width and height need to be set to fixed values and must be made VISIBLE
from the onComplete(long)
method.在使用此API时,如果WebView
屏幕上以避免闪烁,还建议启用预栅格化。 详情请参阅setOffscreenPreRaster(boolean)
,并考虑其注意事项。
Parameters | |
---|---|
requestId |
long : An id that will be returned in the callback to allow callers to match requests with callbacks. |
callback |
WebView.VisualStateCallback : The callback to be invoked. |
void postWebMessage (WebMessage message, Uri targetOrigin)
发布消息到主框架。 嵌入式应用程序可以将消息限制到某个目标原点。 请参阅HTML5 spec了解如何使用目标原点。
Parameters | |
---|---|
message |
WebMessage : the WebMessage |
targetOrigin |
Uri : the target origin. This is the origin of the page that is intended to receive the message. For best security practices, the user should not specify a wildcard (*) when specifying the origin. |
void removeJavascriptInterface (String name)
从此WebView中删除以前注入的Java对象。 请注意,除非下一次(重新)加载页面,否则删除将不会反映在JavaScript中。 见addJavascriptInterface(Object, String)
。
Parameters | |
---|---|
name |
String : the name used to expose the object in JavaScript |
boolean requestChildRectangleOnScreen (View child, Rect rect, boolean immediate)
当该组的小孩想要将特定矩形定位到屏幕上时调用。 ViewGroup
重写这可以相信:
ViewGroup
这应该维护合同:
Parameters | |
---|---|
child |
View : The direct child making the request. |
rect |
Rect : The rectangle in the child's coordinates the child wishes to be on the screen. |
immediate |
boolean : True to forbid animated or delayed scrolling, false otherwise |
Returns | |
---|---|
boolean |
Whether the group scrolled to handle the operation |
boolean requestFocus (int direction, Rect previouslyFocusedRect)
调用此方法可试图将焦点放在特定视图或其后面的某个子视图上,并提供关于焦点来自的方向和特定矩形的提示。 该矩形可以帮助更大的视图提供关于焦点来自何处的更精细的提示,因此,可以在哪里显示选择内容,或者在内部转发焦点更改。 如果视图不可聚焦( isFocusable()
返回false),或者如果它是可以聚焦的,并且在设备处于触摸模式时不能在触摸模式( isFocusableInTouchMode()
)下聚焦,则视图实际上不会聚焦。 如果视图不可见,视图将不会被关注。 如果其父母之一的getDescendantFocusability()
等于FOCUS_BLOCK_DESCENDANTS
则视图将不会被关注。 另请参阅focusSearch(int)
,这是您打电话表示您关注的内容,并且您希望您的父母寻找下一个。 如果您的自定义View
有其希望转发请求的内部View
,您可能希望覆盖此方法。 寻找一个观点,重点关注getDescendantFocusability()
指定的设置。 onRequestFocusInDescendants(int, android.graphics.Rect)
,使用onRequestFocusInDescendants(int, android.graphics.Rect)
在该组的孩子中寻找焦点。
Parameters | |
---|---|
direction |
int : One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, and FOCUS_RIGHT |
previouslyFocusedRect |
Rect : The rectangle (in this View's coordinate system) to give a finer grained hint about where focus is coming from. May be null if there is no hint. |
Returns | |
---|---|
boolean |
Whether this view or one of its descendants actually took focus. |
void requestFocusNodeHref (Message hrefMsg)
请求最后一个点击点处的定位点或图片元素网址。 如果hrefMsg为null,则此方法立即返回,并且不会将hrefMsg发送到其目标。 如果点击的点击中图像,锚点或锚点中的图像,则该消息将其数据中指定键中的字符串关联起来。 与键配对的值可能是空字符串。
Parameters | |
---|---|
hrefMsg |
Message : the message to be dispatched with the result of the request. The message data contains three keys. "url" returns the anchor's href attribute. "title" returns the anchor's text. "src" returns the image's src attribute. |
void requestImageRef (Message msg)
请求用户最后触摸的图像的URL。 msg将以表示URL的字符串作为其对象发送到其目标。
Parameters | |
---|---|
msg |
Message : the message to be dispatched with the result of the request as the data member with "url" as key. The result can be null. |
WebBackForwardList restoreState (Bundle inState)
从给定的Bundle中恢复此WebView的状态。 此方法旨在用于onRestoreInstanceState(Bundle)
,应该调用此方法以恢复此WebView的状态。 如果在此WebView有机会构建状态(加载页面,创建后退/前进列表等)之后调用它,则可能会产生不良副作用。 请注意,此方法不再恢复此WebView的显示数据。
Parameters | |
---|---|
inState |
Bundle : the incoming Bundle of state |
Returns | |
---|---|
WebBackForwardList |
the restored back/forward list or null if restoreState failed |
void resumeTimers ()
恢复所有WebView的所有布局,解析和JavaScript计时器。 这将恢复调度所有计时器。
void savePassword (String host, String username, String password)
此方法在API级别18中已被弃用。
未来版本不支持在WebView中保存密码。
为指定的主机设置用户名和密码对。 Webview使用此数据自动填充Web表单中的用户名和密码字段。 请注意,这与用于HTTP身份验证的凭证无关。
Parameters | |
---|---|
host |
String : the host that required the credentials |
username |
String : the username for the given host |
password |
String : the password for the given host |
WebBackForwardList saveState (Bundle outState)
保存onSaveInstanceState(Bundle)
使用的此WebView的状态。 请注意,此方法不再存储此WebView的显示数据。 如果restoreState(Bundle)
从未被调用过,则以前的行为可能会泄漏文件。
Parameters | |
---|---|
outState |
Bundle : the Bundle to store this WebView's state |
Returns | |
---|---|
WebBackForwardList |
the same copy of the back/forward list used to save the state. If saveState fails, the returned list will be null. |
void saveWebArchive (String filename)
将当前视图保存为Web存档。
Parameters | |
---|---|
filename |
String : the filename where the archive should be placed |
void saveWebArchive (String basename, boolean autoname, ValueCallback<String> callback)
将当前视图保存为Web存档。
Parameters | |
---|---|
basename |
String : the filename where the archive should be placed |
autoname |
boolean : if false, takes basename to be a file. If true, basename is assumed to be a directory in which a filename will be chosen according to the URL of the current page. |
callback |
ValueCallback : called after the web archive has been saved. The parameter for onReceiveValue will either be the filename under which the file was saved, or null if saving the file failed. |
void setBackgroundColor (int color)
设置此视图的背景颜色。
Parameters | |
---|---|
color |
int : the color of the background |
void setCertificate (SslCertificate certificate)
此方法在API级别17中已弃用。
调用这个函数没有什么用处,在以后的版本中会被忽略。
设置主要顶级页面的SSL证书。
Parameters | |
---|---|
certificate |
SslCertificate
|
void setDownloadListener (DownloadListener listener)
当渲染引擎无法处理内容时注册要使用的接口,并且应该下载。 这将取代当前的处理程序。
Parameters | |
---|---|
listener |
DownloadListener : an implementation of DownloadListener |
void setFindListener (WebView.FindListener listener)
注册侦听器以通知页面查找操作进度。 这将取代当前的侦听器。
Parameters | |
---|---|
listener |
WebView.FindListener : an implementation of WebView.FindListener |
void setHorizontalScrollbarOverlay (boolean overlay)
此方法在API级别23中已弃用。
这种方法没有效果。
指定水平滚动条是否具有叠加样式。
Parameters | |
---|---|
overlay |
boolean : true if horizontal scrollbar should have overlay style |
void setHttpAuthUsernamePassword (String host, String realm, String username, String password)
存储给定主机和领域的HTTP身份验证凭证。 此方法旨在与onReceivedHttpAuthRequest(WebView, HttpAuthHandler, String, String)
一起使用。
Parameters | |
---|---|
host |
String : the host to which the credentials apply |
realm |
String : the realm to which the credentials apply |
username |
String : the username |
password |
String : the password |
void setInitialScale (int scaleInPercent)
设置此WebView的初始缩放比例。 0表示默认。 缺省比例的行为取决于getUseWideViewPort()
和getLoadWithOverviewMode()
的状态。 如果内容符合WebView控件的宽度,则缩放设置为100%。 对于范围的内容,在behavor取决于状态getLoadWithOverviewMode()
。 如果它的值为true,则内容将被缩小为适合宽度的WebView控件,否则不会。 如果初始比例大于0,WebView将以此值作为初始比例。 请注意,与视口元标记中的比例属性不同,此方法不考虑屏幕密度。
Parameters | |
---|---|
scaleInPercent |
int : the initial scale in percent |
void setLayerType (int layerType, Paint paint)
指定支持此视图的图层的类型。 该层可以是LAYER_TYPE_NONE
, LAYER_TYPE_SOFTWARE
或LAYER_TYPE_HARDWARE
。
的层与可选的相关联Paint
实例,其控制层是如何由在屏幕上。 组成图层时考虑以下涂料属性:
如果通过调用 setAlpha(float)
将此视图的alpha值设置为<1.0,则该图层的alpha值将被此视图的alpha值取代。
请参阅的文件 LAYER_TYPE_NONE
, LAYER_TYPE_SOFTWARE
和 LAYER_TYPE_HARDWARE
有关何时以及如何使用层的更多信息。
Parameters | |
---|---|
layerType |
int : The type of layer to use with this view, must be one of LAYER_TYPE_NONE , LAYER_TYPE_SOFTWARE or LAYER_TYPE_HARDWARE |
paint |
Paint : The paint used to compose the layer. This argument is optional and can be null. It is ignored when the layer type is LAYER_TYPE_NONE |
void setLayoutParams (ViewGroup.LayoutParams params)
设置与此视图关联的布局参数。 这些视图的父级提供参数,指定应如何安排。 ViewGroup.LayoutParams有许多子类,它们对应ViewGroup的不同子类,它们负责安排子级。
Parameters | |
---|---|
params |
ViewGroup.LayoutParams : The layout parameters for this view, cannot be null |
void setMapTrackballToArrowKeys (boolean setMap)
此方法在API级别17中已弃用。
未来版本中仅支持默认情况下为true。
Parameters | |
---|---|
setMap |
boolean
|
void setNetworkAvailable (boolean networkUp)
通知WebView的网络状态。 这用于设置JavaScript属性window.navigator.isOnline,并生成HTML5中指定的联机/脱机事件。 5.7.7
Parameters | |
---|---|
networkUp |
boolean : a boolean indicating if network is available |
void setOverScrollMode (int mode)
为此视图设置过卷模式。 有效的滚动模式有OVER_SCROLL_ALWAYS
(默认), OVER_SCROLL_IF_CONTENT_SCROLLS
(只允许在视图内容大于容器时滚动滚动)或OVER_SCROLL_NEVER
。 仅当视图能够滚动时才能设置视图的滚动模式。
Parameters | |
---|---|
mode |
int : The new over-scroll mode for this view. |
void setPictureListener (WebView.PictureListener listener)
此方法在API级别12中已被弃用。
这种方法现在已经过时了。
设置图片侦听器。 这是一个用于接收新图片通知的界面。
Parameters | |
---|---|
listener |
WebView.PictureListener : an implementation of WebView.PictureListener |
void setScrollBarStyle (int style)
指定滚动条的样式。 滚动条可以重叠或嵌入。 插入时,它们添加到视图的填充。 滚动条可以在填充区域或视图的边缘内绘制。 例如,如果视图具有可绘制背景,并且您想要在drawable指定的填充内绘制滚动条,则可以使用SCROLLBARS_INSIDE_OVERLAY或SCROLLBARS_INSIDE_INSET。 如果您希望它们出现在视图边缘,忽略填充,则可以使用SCROLLBARS_OUTSIDE_OVERLAY或SCROLLBARS_OUTSIDE_INSET。
Parameters | |
---|---|
style |
int : the style of the scrollbars. Should be one of SCROLLBARS_INSIDE_OVERLAY, SCROLLBARS_INSIDE_INSET, SCROLLBARS_OUTSIDE_OVERLAY or SCROLLBARS_OUTSIDE_INSET. |
void setVerticalScrollbarOverlay (boolean overlay)
此方法在API级别23中已弃用。
这种方法没有效果。
指定垂直滚动条是否具有叠加样式。
Parameters | |
---|---|
overlay |
boolean : true if vertical scrollbar should have overlay style |
void setWebChromeClient (WebChromeClient client)
设置chrome处理程序。 这是WebChromeClient的一个实现,用于处理JavaScript对话框,网站图标,标题和进度。 这将取代当前的处理程序。
Parameters | |
---|---|
client |
WebChromeClient : an implementation of WebChromeClient |
void setWebContentsDebuggingEnabled (boolean enabled)
启用加载到此应用程序的任何WebView中的Web内容(HTML / CSS / JavaScript)调试。 可以启用此标志以便于调试WebViews中运行的Web布局和JavaScript代码。 有关调试指南,请参阅WebView文档。 默认值是false。
Parameters | |
---|---|
enabled |
boolean : whether to enable web contents debugging |
void setWebViewClient (WebViewClient client)
设置将接收各种通知和请求的WebViewClient。 这将取代当前的处理程序。
Parameters | |
---|---|
client |
WebViewClient : an implementation of WebViewClient |
boolean shouldDelayChildPressedState ()
如果应该延迟此ViewGroup的子项或后代的按下状态,则返回true。 通常,这应该对可以滚动的容器(例如List)完成。 这可以防止在用户实际尝试滚动内容时出现按下状态。 出于兼容性原因,默认实现返回true。 不滚动的子类通常应该重写此方法并返回false。
Returns | |
---|---|
boolean |
boolean showFindDialog (String text, boolean showIme)
此方法在API级别18中已被弃用。
此方法在所有Android版本上无法可靠运行; 使用WebView.findAllAsync()实现自定义查找对话框提供了更强大的解决方案。
启动ActionMode以查找此WebView中的文本。 仅当此WebView连接到视图系统时才有效。
Parameters | |
---|---|
text |
String : if non-null, will be the initial text to search for. Otherwise, the last String searched for in this WebView will be used to start. |
showIme |
boolean : if true, show the IME, assuming the user will begin typing. If false and text is non-null, perform a find all. |
Returns | |
---|---|
boolean |
true if the find dialog is shown, false otherwise |
void zoomBy (float zoomFactor)
在此WebView中执行缩放操作。
Parameters | |
---|---|
zoomFactor |
float : the zoom factor to apply. The zoom factor will be clamped to the Webview's zoom limits. This value must be in the range 0.01 to 100.0 inclusive. |
boolean zoomIn ()
在此WebView中执行放大。
Returns | |
---|---|
boolean |
true if zoom in succeeds, false if no zoom changes |
boolean zoomOut ()
在此WebView中执行缩小。
Returns | |
---|---|
boolean |
true if zoom out succeeds, false if no zoom changes |
int computeHorizontalScrollOffset ()
计算水平滚动条拇指在水平范围内的水平偏移量。 该值用于计算滚动条轨道内的拇指位置。
范围以任意单位表示,必须与 computeHorizontalScrollRange()
和 computeHorizontalScrollExtent()
使用的单位相同。
默认偏移量是该视图的滚动偏移量。
Returns | |
---|---|
int |
the horizontal offset of the scrollbar's thumb |
int computeHorizontalScrollRange ()
计算水平滚动条代表的水平范围。
范围以任意单位表示,必须与 computeHorizontalScrollExtent()
和 computeHorizontalScrollOffset()
使用的单位相同。
默认范围是此视图的图纸宽度。
Returns | |
---|---|
int |
the total horizontal range represented by the horizontal scrollbar |
int computeVerticalScrollExtent ()
计算垂直滚动条拇指在垂直范围内的垂直范围。 该值用于计算滚动条轨道内的拇指长度。
范围以任意单位表示,必须与 computeVerticalScrollRange()
和 computeVerticalScrollOffset()
使用的单位相同。
默认范围是此视图的绘图高度。
Returns | |
---|---|
int |
the vertical extent of the scrollbar's thumb |
int computeVerticalScrollOffset ()
计算垂直滚动条拇指在水平范围内的垂直偏移量。 该值用于计算滚动条轨道内的拇指位置。
范围以任意单位表示,必须与 computeVerticalScrollRange()
和 computeVerticalScrollExtent()
使用的单位相同。
默认偏移量是该视图的滚动偏移量。
Returns | |
---|---|
int |
the vertical offset of the scrollbar's thumb |
int computeVerticalScrollRange ()
计算垂直滚动条代表的垂直范围。
范围以任意单位表示,必须与 computeVerticalScrollExtent()
和 computeVerticalScrollOffset()
使用的单位相同。
Returns | |
---|---|
int |
the total vertical range represented by the vertical scrollbar 默认范围是此视图的绘图高度。 |
void dispatchDraw (Canvas canvas)
通过绘制来绘制子视图。 这可能会被派生类重写,以便在子对象被绘制之前获得控制权(但在绘制自己的视图之后)。
Parameters | |
---|---|
canvas |
Canvas : the canvas on which to draw the view |
void onAttachedToWindow ()
这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此功能保证在onDraw(android.graphics.Canvas)
之前onDraw(android.graphics.Canvas)
,但可以在第一次onDraw之前的任何时候调用此函数 - 包括onMeasure(int, int)
之前或之后。
void onConfigurationChanged (Configuration newConfig)
当应用程序使用的资源的当前配置发生更改时调用。 您可以使用它来决定何时重新加载可根据方向和其他配置特性更改的资源。 如果您不依赖正常的配置更改时重新创建活动实例的Activity
机制,则只需使用它。
Parameters | |
---|---|
newConfig |
Configuration : The new resource configuration. |
void onDraw (Canvas canvas)
实施这个来做你的绘画。
Parameters | |
---|---|
canvas |
Canvas : the canvas on which the background will be drawn |
void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect)
当视图的焦点状态改变时,由视图系统调用。 当焦点更改事件是由方向导航导致的,direction和previouslyFocusedRect提供了焦点来自何处的洞察。 重写时,一定要调用超类,以便进行标准的焦点处理。
Parameters | |
---|---|
focused |
boolean : True if the View has focus; false otherwise. |
direction |
int : The direction focus has moved when requestFocus() is called to give this view focus. Values are FOCUS_UP , FOCUS_DOWN , FOCUS_LEFT , FOCUS_RIGHT , FOCUS_FORWARD , or FOCUS_BACKWARD . It may not always apply, in which case use the default. |
previouslyFocusedRect |
Rect : The rectangle, in this view's coordinate system, of the previously focused view. If applicable, this will be passed in as finer grained information about where the focus is coming from (in addition to direction). Will be null otherwise. |
void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)
调用, measure(int, int)
子类覆盖以提供其内容的准确和有效的度量。
合同:覆盖此方法时, 必须致电setMeasuredDimension(int, int)
来存储此视图的测量宽度和高度。 不这样做会触发IllegalStateException
,由measure(int, int)
引发。 调用超类' onMeasure(int, int)
是一种有效的用法。
Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)
以提供更好的内容度量。
如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()
和 getSuggestedMinimumWidth()
)。
Parameters | |
---|---|
widthMeasureSpec |
int : horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |
heightMeasureSpec |
int : vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |
void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)
由 overScrollBy(int, int, int, int, int, int, int, int, boolean)
调用以响应过度滚动操作的结果。
Parameters | |
---|---|
scrollX |
int : New X scroll value in pixels |
scrollY |
int : New Y scroll value in pixels |
clampedX |
boolean : True if scrollX was clamped to an over-scroll boundary |
clampedY |
boolean : True if scrollY was clamped to an over-scroll boundary |
void onScrollChanged (int l, int t, int oldl, int oldt)
这是为了响应此视图中的内部滚动而调用的(即视图滚动了其自己的内容)。 这通常是scrollBy(int, int)
或scrollTo(int, int)
被调用的结果。
Parameters | |
---|---|
l |
int : Current horizontal scroll origin. |
t |
int : Current vertical scroll origin. |
oldl |
int : Previous horizontal scroll origin. |
oldt |
int : Previous vertical scroll origin. |
void onSizeChanged (int w, int h, int ow, int oh)
当这个视图的大小发生变化时,这在布局期间被调用。 如果您刚刚添加到视图层次结构中,则会使用旧值0调用。
Parameters | |
---|---|
w |
int : Current width of this view. |
h |
int : Current height of this view. |
ow |
int : Old width of this view. |
oh |
int : Old height of this view. |
void onVisibilityChanged (View changedView, int visibility)
当视图的可见性或视图的祖先已更改时调用。
Parameters | |
---|---|
changedView |
View : The view whose visibility changed. May be this or an ancestor view. |
visibility |
int : The new visibility, one of VISIBLE , INVISIBLE or GONE . |
void onWindowVisibilityChanged (int visibility)
叫当包含窗口具有改变其可见性(间GONE
, INVISIBLE
,和VISIBLE
)。 请注意,这会告诉您窗口管理器是否使您的窗口可见; 这并不能告诉你你的窗口是否被屏幕上的其他窗口遮挡,即使它本身是可见的。
Parameters | |
---|---|
visibility |
int : The new visibility of the window. |