1. 程式人生 > >隱藏android中webview放大縮小控制元件

隱藏android中webview放大縮小控制元件

[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;
}
}