WebView wv = (WebView) findViewById(R.id.webview);
※ WebView 加载数据的几种方法
wv.loadData("html 代码","text/html",”UTF-8”); 这样出现的情况是乱码,并没有正确的显示。如果需要正确的显示,可以用下面的方式
wv.loadData("html 代码","text/html; charset=UTF-8",null);
1.设置滚动条
wv.setHorizontalScrollBarEnabled(false);// 设置水平滚动条
wv.setVerticalScrollBarEnabled(false);// 设置竖直滚动条
2.设置点击事件
wv.setWebViewClient(new MyWebViewClient());
private class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
如果不想让点击做任何操作,可以直接返回true
(return true;)
可以再这里做你想要的操作,如果跳转到其他界面,调用本webview等
Eg:view.loadUrl(url);
return true;
}
}
WebSettings webSettings = wv.getSettings();
如果webView中需要用户手动输入用户名、密码或其他,则webview必须设置支持获取手势焦点。
webview.requestFocusFromTouch();
※ webSettings 属性
Webview 自适应屏幕大小
1.打开页面时, 自适应屏幕: (设置加载进来的页面自适应手机屏幕 ) webSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放webSettings.setLoadWithOverviewMode(true);
疑问:第一次进来的时候是这样的
可以缩放滑动,但是第二次进来就变了,不可以滑动了
不解???!!!
2.使页面支持缩放:
webSettings.setSupportZoom(true);// 设置是支持缩放(如果置为false,webSettings.setDisplayZoomControls(true) 没有效果)
webSettings.setDisplayZoomControls(true);// 没发现有什么变化webSettings.setBuiltInZoomControls(true);// 支持缩放,手动触摸进行缩放(true: 可以缩放 false:不可以缩放)
3.
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持内容重新布局
(LayoutAlgorithm是一个枚举用来控制页面的布局,有三个类型:
1.NARROW_COLUMNS:可能的话使所有列的宽度不超过屏幕宽度
2.NORMAL:正常显示不做任何渲染
3.SINGLE_COLUMN:把所有内容放大webview等宽的一列中
用SINGLE_COLUMN类型可以设置页面居中显示,页面可以放大缩小,但这种方法不怎么好,有时候会让你的页面布局走样而且我测了一下,只能显示中间那一块,超出屏幕的部分都不能显示。
)
4.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;
DebugLog.d(TAG, "densityDpi = " + mDensity);
if (mDensity == 240) {
webSettings.setDefaultZoom(ZoomDensity.FAR);
} else if (mDensity == 160) {
webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
} else if(mDensity == 120) {
webSettings.setDefaultZoom(ZoomDensity.CLOSE);
}else if(mDensity == DisplayMetrics.DENSITY_XHIGH){
webSettings.setDefaultZoom(ZoomDensity.FAR);
}else if (mDensity == DisplayMetrics.DENSITY_TV){
webSettings.setDefaultZoom(ZoomDensity.FAR);
}
webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片。true:加载图片,false:不加载图片
webSettings.setJavaScriptEnabled(true); //支持js
webSettings.supportMultipleWindows(); //多窗口
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
webSettings.setAllowFileAccess(true); //设置可以访问文件
webSettings.setNeedInitialFocus(true); //当webview调用requestFocus时为webview设置节点
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口