在Honeycomb设备上的WebView中使用<input type="password">字段时,我遇到了问题。每次滚动 View 时,一旦滚动结束,屏幕就会闪烁黑色,甚至可以保持全黑(除非它将绘制焦点突出的密码字段)。我在检查过的所有三种Honeycomb平板电脑上都看到了这一点。

我可以在浏览器应用程序中加载相同的HTML,但是看不到此问题。我尝试过更改WebView的WebSettings/WebChromeClient/WebViewClient上的许多设置,但没有运气。我已经在Froyo平板电脑上加载了以下代码,并且未发生此问题,因此似乎是特定于Honeycomb的问题。

有没有人见过这个?目前,我对如何解决或解决此问题不知所措。

这是重现此问题的简短代码示例。只需关注密码字段并上下滚动即可。有一个密码类型输入字段和一个文本类型输入字段,只是为了表明该文本类型字段不会发生此问题。尽管没有<div>标记仍然会发生问题,但是<div>标记只是为了使它更容易滚动查看问题。

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class PasswordFieldTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        WebView webview = new WebView(this);
        String html = "<html><body><div style=\"with: 120%; height: 200%; border: 20px dashed black;\">" +
            "Password: <input type=\"password\" name=\"passfield\"/><br/>" +
            "Text: <input type=\"text\" name=\"textfield\"/>" +
            "</div></body></html>";
        webview.loadData(html, "text/html", "utf-8");

        setContentView(webview);
    }
}

最佳答案

在尝试了这里建议的所有内容之后,这终于在所有电话上为我工作了:

android:hardwareAccelerated="true"

和:
if (android.os.Build.VERSION.SDK_INT < 16) {
 webView.setBackgroundColor(0x00000000);
} else {
 webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
}

如果您发现无法正常使用的手机,请告诉我。
适用于以下手机:
  • note2(4.1.2)
  • htc一x(4.0.4)
  • 银河s3(4.3)
  • nexus4(4.3)
  • 10-08 13:46