在Android平板电脑上双击html页面的密码字段时,webview将变为空白

时间:2011-08-26 18:29:09

标签: android-webview

问题:在Android平板电脑上双击html页面的密码字段后,webview将变为空白。只需在html页面输入用户名和密码就没问题了。

测试:三星Galaxy平板电脑(GT-P7510)和摩托罗拉Xoom

布局文件摘要:     

  

            <LinearLayout
                android:layout_width="@dimen/layout_xlarge_width"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:padding="20dip"
                android:orientation="vertical">
            <TextView 
                android:id="@+id/urlview"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/test"                 
            />
                <Spinner
                android:id="@+id/profile"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"                  
                />                       

        </LinearLayout>     

        <WebView 
            android:id="@+id/webview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:visibility="gone"
        />
</LinearLayout>

设置webview的代码:

webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.clearCache(true);
webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
setUserAgent(getString(R.string.user_agent_suffix));

其他:

在webview上添加对缩放的支持或设置触摸和焦点监听器没有帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

我有同样的问题,并考虑使用一个丑陋的html技巧,通过2个文本输入模拟密码输入:

<div style="position: relative;">
<input type="text" id="hiddenPwd" onkeyup="$('#fakePwd')[0].value = '*************'.substr(0, $('#hiddenPwd')[0].value.length);" /> 
<div style="position:absolute; top: 0; left: 0;"><input type="text" id="fakePwd" onfocus="$('#hiddenPwd')[0].focus();"/></div>
</div>

很好地工作,唯一的缺点是光标没有显示......

答案 1 :(得分:1)

我的申请中遇到了一些问题。看起来哪些bug会影响所有Honeycomb平板电脑。

如果打开硬件加速,问题就会消失。但是硬件加速的WebView在性能和透明度方面存在问题。

对我来说,在硬件加速窗口上运行精美的软件渲染WebView:

mWindow.setFlags(
    Window.LayoutParam.FLAG_HARDWARE_ACCELERATED,
    Window.LayoutParam.FLAG_HARDWARE_ACCELERATED);
...
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE);

PS:当然,您也可以在清单文件中为整个应用程序启用硬件加速。