android webview载入网页 网页中文本框输入的问题

android webview载入网页 网页中文本框输入的问题,第1张

我也遇到这种情况过,比如你输入QQ帐号密码时也是d出在你输入法上面,这是一个优化把 有利有弊,就按他说的改下把androidManifest.xml文件中设置你webview所在的Activity属性android:windowSoftInputMode="adjustPan" 就可以了,如果不行,把adjustPan换成adjustResize

你可以试试这段代码:[mw_shl_code=java,true] KeyEvent.DispatcherState state = new KeyEvent.DispatcherState()KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0)shiftPressEvent.dispatch(mWebView, state, null)[/mw_shl_code]这个是复制文本的,你要在长按事件里面去处理

1)修改新建项目的res\Iayout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个WebView组件

2)在MainActivity的onCreate()方法中,首先获取布局管理器中添加的Web View组件,然后创建一个字符串构建器,将要显示的HTML代码放置在该构建器中,最后应用IoadDataWithBaseURLO方法加载构建器中的HTML代码

android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。

可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放

不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。

即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:

1,页面head添加

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

2,设置字体也按480基准缩放。

下面是代码:

Java代码 

private void setZoom(WebSettings webSettings) {  int screenDensity = getResources().getDisplayMetrics().densityDpi  String zd = "FAR"  switch (screenDensity) {  case DisplayMetrics.DENSITY_LOW:      zd = "CLOSE"      break   case DisplayMetrics.DENSITY_MEDIUM:      zd = "MEDIUM"      break  }  Class<?> zoomDensityClass = null  Enum<?> zoomDensity = null   try {      if (zoomDensityClass == null) {      zoomDensityClass = Class.forName("android.webkit.WebSettings$ZoomDensity")      }      if (zoomDensity == null) {      zoomDensity = (Enum<?>) Enum.valueOf((Class) zoomDensityClass,zd)      }       Method method = WebSettings.class.getDeclaredMethod( "setDefaultZoom", new Class<?>[] { zoomDensityClass })      if(method!=null){      method.invoke(webSettings, zoomDensity)      }            method = WebSettings.class.getDeclaredMethod( "setTextZoom", new Class<?>[] { int.class })      if(method!=null){      method.invoke(webSettings, 100 * getWindowManager().getDefaultDisplay().getWidth() / 480)      }  } catch (Exception e) {      Log.e(TAG, e.getMessage())      return  }     }

Android的webview加载本地html、本apk内html和远程URL

Android的webview加载本地html、本apk内html和远程URL

android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。

可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。

不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。

即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:

1,页面head添加

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

2,设置字体也按480基准缩放。

下面是代码:

Java代码 

private void setZoom(WebSettings webSettings) {  int screenDensity = getResources().getDisplayMetrics().densityDpi  String zd = "FAR"  switch (screenDensity) {  case DisplayMetrics.DENSITY_LOW:      zd = "CLOSE"      break   case DisplayMetrics.DENSITY_MEDIUM:      zd = "MEDIUM"      break  }  Class<?> zoomDensityClass = null  Enum<?> zoomDensity = null   try {      if (zoomDensityClass == null) {      zoomDensityClass = Class.forName("android.webkit.WebSettings$ZoomDensity")      }      if (zoomDensity == null) {      zoomDensity = (Enum<?>) Enum.valueOf((Class) zoomDensityClass,zd)      }       Method method = WebSettings.class.getDeclaredMethod( "setDefaultZoom", new Class<?>[] { zoomDensityClass })      if(method!=null){      method.invoke(webSettings, zoomDensity)      }            method = WebSettings.class.getDeclaredMethod( "setTextZoom", new Class<?>[] { int.class })      if(method!=null){      method.invoke(webSettings, 100 * getWindowManager().getDefaultDisplay().getWidth() / 480)      }  } catch (Exception e) {      Log.e(TAG, e.getMessage())      return  }     }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11363518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存