android:layout_width="match_parent"
android:layout_height="match_parent"/>
......
</LinearLayout>
``````
// MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@TargetApi(21)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
});
webView.loadUrl("https://ke.youdao.com");
}
```
-
如果访问的页面中含有 JavaScript 的代码,则需要设置 WebView 支持 Javascript。
webView.getSettings().setJavaScriptEnabled(true);
-
如果页面中含有连接,点击链接如果想继续在当前浏览器中浏览网页,则需要重写 WebView 的 WebViewClient 对象。
webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @TargetApi(21) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { view.loadUrl(request.getUrl().toString()); return true; } });
如果不重写 WebView 的对象 WebViewClient,点击页面中的连接则会在手机系统自带的浏览器中打开新的链接。
在第一节中已经简单使用过 WebViewClient 这个类,还有其他一些常用的方法可以重写并使用,其含义如下所示:
webView.setWebViewClient(new WebViewClient() {
// 给应用接管处理某些 url 请求的机会,返回 true 则拦截该请求,返回 false 不拦截,已经被废弃
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
// 给应用接管处理某些 url 请求的机会,返回 true 则拦截该请求,返回 false 不拦截,是上面方法的替代方