Android键盘隐形

时间:2016-05-24 13:36:27

标签: android android-webview android-softkeyboard

我有一个活动 A ,它有一个按钮。点击此按钮,活动 B 即会启动。活动 B 在xml布局中包含WebView,该布局加载本地存储在设备上的HTML页面。整个网页由几个CSS(重材料)和jsons(大尺寸)组成。此时RAM使用率约为90MB。 HTML中包含文本和数字输入字段。问题是打开和关闭webview 3-4次后,当我点击输入字段时键盘变得不可见。

Click here for screenshot

这是我的活动代码。

public class LaunchActivity extends Activity {

WebView webView;
private final int FILECHOOSER_RESULTCODE = 1;
private Uri mCapturedImageURI = null;
public String mCameraPhotoPath;
String webViewUrl;
public String mMediaType;
public int flag = 0;
public File imageStorageDir;
Bundle bundle;
String mode;
public ProgressDialog progDailog;

int questionToBeLaunch;

Project project;

public void onBackPressed() {
}

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.launch_survey);

    // getting data from intent and creating the url to load.

    webView = (WebView) findViewById(R.id.webView1);

    setWebViewProperties();

    Map<String, String> header = new HashMap<String, String>(2);
    header.put("Pragma", "no-cache");
    header.put("Cache-Control", "no-cache");
    webView.loadUrl(webViewUrl, header);
}

public void setWebViewProperties(){
    JavaScriptInterface jsInterface = new JavaScriptInterface(this);
    // Javascript enabled on webview
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setAllowUniversalAccessFromFileURLs(true);


    webView.addJavascriptInterface(jsInterface, "interface");

    // Other webview options
    webView.getSettings().setLoadWithOverviewMode(true);

    //webView.getSettings().setUseWideViewPort(true);
    //Other webview settings
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setAllowFileAccessFromFileURLs(true);
    webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    webView.getSettings().setSupportZoom(true);

    progDailog = new ProgressDialog(LaunchSurvey.this);
    //Load url in webview
    webView.setWebViewClient(new WebViewClient() {


        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            progDailog.setMessage("Loading...");
            progDailog.setCanceledOnTouchOutside(false);
            progDailog.setCancelable(false);
            progDailog.show();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webView.clearCache(true);
        }
    });
}


@Override
protected void onPause() {
    super.onPause();
}


@Override
protected void onDestroy() {
    super.onDestroy();
  //  webView.setOnTouchListener(null);
    webView.removeAllViews();
    webView.clearCache(true);
    webView.clearHistory();

   // clearCache(getApplicationContext());
    webView.destroy();
    webView = null;
}
}

1 个答案:

答案 0 :(得分:0)

经过多日的挣扎,最终我找出了问题的根本原因。这可能是因为webview需要解析的沉重的JavaScript代码。尝试稍微减轻它并且你已经完成了设置,数字键盘不会被隐藏。