开发Webview的技术,小的技术知识点

来源:互联网 发布:js按钮置灰 不可点击 编辑:程序博客网 时间:2024/04/29 14:20

转载和总结:

Android WebView中软键盘会遮挡输入框相关问题


要想实现这种软键盘出现的时候会自动把输入框的布局顶上去的效果,需要设置输入法的属性,有以下两种设置方式:

    一、在java代码中设置如下:
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE|  
             WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
  二、在androidmanifest.xml中设置与其对应的activity的属性如下:
     android:windowSoftInputMode="stateHidden|adjustPan"
  正常情况下,设置了该属性之后,软键盘在弹出时,输入框便不会被遮挡。
  但是该属性在有些情况下是不生效的,目前我所知的是以下两种情况:
   一、 当前activity被设置了全屏属性,即           android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
   二、webview的相关布局被固定了高度,这里也分为两种情况:
          1.根布局固定了高度,这里的根布局是webview所在的Activity的最外层布局;
          2.根布局未固定高度,但是根布局是FrameLayout布局,而webview或者其父控件被固定了高度。(项目中遇到的就是这种情况,经过反复对比测试,终于找到原因,希望分享出来,能帮助其他人)
         以上的这两种固定的高度都会导致软键盘遮挡输入框的问题,需格外留意。
ps:固定了高度,是指layout_height属性被赋予了具体多少dp或px。
-------------------------------------------------------------------------------------------------------------

android webview js alert对话框 不能弹出 解决办法


在配置了webview的setting属性后,以前设置的都是可以直接弹出来的,今天写一个小demo时候莫名其妙的发现alert怎么也出来,即使设置了这么多也不行:

webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setAllowFileAccess(true);// 设置允许访问文件数据
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setDomStorageEnabled(true);
webSettings.setDatabaseEnabled(true);

解决办法:
webview只是一个承载体,各种内容的渲染需要使用webviewChromClient去实现,所以set一个默认的基类WebChromeClient就行,代码如下:

mWebView.setWebChromeClient(new WebChromeClient());

0 0