这是evernote上的笔记,笔记入口
android的webview自带的缩放功能很不错,唯一的遗憾就是那个按钮太丑了,于是考虑将其去掉,但是webview对外开放的方法并没有能够完成这个功能的,于是考虑自己继承webview,来添加这个功能。主要就是:
this.getSettings().setBuiltInZoomControls(true);
this.getSettings().setDisplayZoomControls(false);
如果api较低,则通过反射去执行未暴露的方法。用反射来干坏事也是没办法。
去掉滚动条比较简单,webview直接提供了方法:
this.setVerticalScrollBarEnabled(false);
this.setHorizontalScrollBarEnabled(false);
代码是参考的stackOverFlow,哪个帖子找不到了。
相关代码:(重写的webVIew内部要调用的方法)
/**
* 隐藏缩放按钮
* @param settings
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setZoomViewInvisible(WebSettings settings) {
//去掉滚动条
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false);
// 设置可缩放
settings.setBuiltInZoomControls(true);
// 根据版本号设置缩放按钮不显示
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {//用于判断是否为Android 3.0系统, 然后隐藏缩放控件
settings.setDisplayZoomControls(false);
}else {// Android 3.0(11) 以下使用以下方法
setZoomControlGone(mWebView);
}
}
//实现放大缩小控件隐藏
public void setZoomControlGone(View view) {
Class classType;
Field field;
try {
classType = WebView.class;
field = classType.getDeclaredField("mZoomButtonsController");
field.setAccessible(true);
ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view);
mZoomButtonsController.getZoomControls().setVisibility(View.GONE);
try {
field.set(view, mZoomButtonsController);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
效果图(这里显示的是一个图片,已经放大了):