今日遇一需求,要求在WebView的缩放空间中加入一个按钮用以实现全屏功能,结合网上查找的资料,实现了这个功能,共享出来。
改造缩放控件的函数:
/**改造缩放控件
* @param view 显示缩放控件的WebView对象*/
public void resetZoomControl(View view){
Class classType;
Field field;
try {
classType = WebView.class;
field = classType.getDeclaredField("mZoomButtonsController");
field.setAccessible(true);
//获取到控制ZoomControls的控制器
ZoomButtonsController mZoomButtonsController = new ZoomButtonsController(view);
//获取ZoomControls
ZoomControls zoomControls = (ZoomControls) mZoomButtonsController.getZoomControls();
//改变ZoomControl的样式
zoomControls.removeAllViews();
((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.zoom_controls, zoomControls, true);
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();
}
}
对应的新的布局文件zoom_controls.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" >
<ZoomButton
android:id="@+id/zoomOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_zoom_down"
android:onClick="zoomOut" />
<ImageView
android:id="@+id/fullScreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/btn_zoom_up"
android:onClick="fullScreen" />
<ZoomButton
android:id="@+id/zoomIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_zoom_up"
android:onClick="zoomIn" />
</merge>
然后分别对缩放控件中的各个按钮绑定监听其就可以了!