之所以出现这种情况,主要是当文本框获取到焦点后,键盘自动弹出,会执行WebView的displaySoftKeyboard 方法,这个方法会把缩小的网页恢复到正常情况(也就是说缩小的网页放大),但是我目前的项目都是不允许页面缩放的,所以一旦页面放大后就无法恢复。
webview.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Overridepublic void onFocusChange(View v, boolean hasFocus) {
if(hasFocus)
{
try {
Field defaultScale = WebView.class.getDeclaredField("mDefaultScale");
defaultScale.setAccessible(true);
//WebViewSettingUtil.getInitScaleValue(VideoNavigationActivity.this, false )/100.0f 是我的程序的一个方法,可以用float 的scale替代
defaultScale.setFloat(webview, 1);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
});
利用java反射机制,setFloat方法比例我设置为1,就是保持不变。。