`

webview去掉缩放按钮、边界滚动条

 
阅读更多

这是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();  
	    }  
	}  

 

 

效果图(这里显示的是一个图片,已经放大了):
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics