隐藏android中webview放大缩小控件

论坛 期权论坛 脚本     
匿名技术用户   2021-1-6 06:41   11   0
[color=darkred][size=medium]在android SDK版本11以前(也就是Android3.0以前),webvie是不可以隐藏缩放控件的,现在我们通过反射来隐藏该控件。[/size][/color]

[size=medium]重写WebView:[/size]
import java.lang.reflect.Method;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.webkit.WebView;
import android.widget.ZoomButtonsController;

/**
* 去掉webview当中放大缩小控件,并且保留效果
*/
public class SupportZoomWebView extends WebView {
// Webview内部的按钮控制对象
private ZoomButtonsController zoomController = null;

public SupportZoomWebView(Context context) {
super(context);
// TODO Auto-generated constructor stub
disableZoomController();
}

public SupportZoomWebView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
disableZoomController();
}

public SupportZoomWebView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
disableZoomController();
}

// 使得控制按钮不可用
@SuppressLint("NewApi")
private void disableZoomController() {
// API version 大于11的时候,SDK提供了屏蔽缩放按钮的方法
if (android.os.Build.VERSION.SDK_INT >= 11) {
this.getSettings().setBuiltInZoomControls(true);
this.getSettings().setDisplayZoomControls(false);
} else {
// 如果是11- 的版本使用JAVA中的映射的办法
getControlls();
}
}

private void getControlls() {
try {
Class webview = Class.forName("android.webkit.WebView");
Method method = webview.getMethod("getZoomButtonsController");
zoomController = (ZoomButtonsController) method.invoke(this, null);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
super.onTouchEvent(ev);
if (zoomController != null) {
// 隐藏按钮
zoomController.setVisible(false);
}
return true;
}
}
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP