0

У меня есть набор AlertDialog, который я могу делать взад и вперед. Диалог A, Диалог B (имеет содержимое HTML) и Dialog C. В диалоговом окне BI добавлен веб-просмотр, чтобы показать некоторый HTML-контент, я хочу отключить клавиатуру от всплытия в этом первичном диалоговом окне B. В HTML-содержимом нет текста редактирования текста , Я использовал «getWindow(). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)» , который выполняет задание при первом открытии диалога. Когда я впервые перехожу из диалога A в диалог B, диалоговое окно B не открывает клавиатуру. Когда я вернусь в диалог B от A или C, клавиатура начнет появляться, когда я прокручиваю содержимое HTML.остановить андроид на экранной клавиатуре всплывающее окно на веб-сайте

HTML-контент - это контент на основе касания.

Я предполагаю, что код для скрытия клавиатуры не выполняется при каждом открытии диалога.

Я пробовал «SOFT_INPUT_STATE_ALWAYS_HIDDEN» и «SOFT_INPUT_STATE_HIDDEN».

EDIT: Если я открыл Google на веб-странице, у которого есть текстовое поле для поиска. клавиатура не появляется, когда я касаюсь текста редактирования, который хорош, даже если я перемещаюсь. Но когда я пытаюсь прокручивать вверх и вниз по странице, клавиатура появляется и исчезает (происходит со второго посещения диалогового окна).

Не могли бы вы поделиться своими мыслями о том, как скрыть клавиатуру каждый раз, когда я открыть этот диалог B.

@Override 
@Deprecated 
protected Dialog onCreateDialog(int id) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.AlertDialogCustom); 
    final Boolean pinVerficationDialogPopedUp = loginData.getBoolean("pinVerficationDialogPopedUp", 
      false); 

    if (pinVerficationDialogPopedUp == false) { 
     switch (id) { 
      case DIALOG_ADD_A_PERSON_BODY_MAP: 
      try { 
        LayoutInflater inflaterBodyMap = this 
          .getLayoutInflater(); 
        final View inflatorBodyMap = inflaterBodyMap 
          .inflate(
            R.layout.dialog_incident_window_body_map, 
            null); 
        bodyMapWebView = (WebView) inflatorBodyMap.findViewById(R.id.webView); 

        bodyMapWebView.getSettings().setJavaScriptEnabled(true); 
        bodyMapWebView.getSettings().setBuiltInZoomControls(true); 
        bodyMapWebView.getSettings().setSupportZoom(true); 

        /* 
        Trying to resolve issue where sometimes when the HTML page loads, it does 
        not load the whole content 
        */ 
        bodyMapWebView.post(new Runnable() { 
         @Override 
         public void run() { 
          bodyMapWebView.loadUrl("file:///android_asset/bodyMap.html"); 
         } 
        }); 

        bodyMapWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
        builder.setTitle("Injured person"); 
        builder.setView(inflatorBodyMap); 
        builder.setPositiveButton("Next", 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
                int which) { 
                //next dialog 


           } 
          }); 
        builder.setNegativeButton("Back", 
          new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialog, 
                int which) { 
            //previous dialog 

           } 
          }); 
        alertBodyMap = builder.create(); 
        alertBodyMap.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
        alertBodyMap.show(); 
        return dialog; 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return dialog 
     } 

Ваша помощь очень ценится. Спасибо

+0

http://stackoverflow.com/a/1662088/527759 – httpdispatch

+0

Привет, user527759 У меня нет текстов редактирования в диалоговом окне, у меня есть только веб-представление в линейном макете. Я пробовал ссылку с focusable true для линейного макета, но это не решает. – BRDroid

ответ

0

Проблема была связана с функцией управления увеличением на веб-просмотре.

Я использовал приведенный ниже код для управления увеличением. bodyMapWebView.getSettings(). SetBuiltInZoomControls (true); bodyMapWebView.getSettings(). SetSupportZoom (true);

Я отключил отображение элементов управления масштабированием, поэтому мы можем только увеличить масштаб с помощью следующего кода.

bodyMapWebView.getSettings().setBuiltInZoomControls(true);    
bodyMapWebView.getSettings().setDisplayZoomControls(false); 

Это разрешило проблему, webview больше не всплывает на клавиатуре.

Чтобы использовать зуммирование +/- Я реализовал ZoomControls в XML

<ZoomControls android:id="@+id/zoomcontrols" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    /> 

кода Java:

 zoomControls = (ZoomControls) inflatorBodyMap.findViewById(R.id.zoomcontrols); 
        /** 
        * 
        */ 
        zoomControls.setOnZoomInClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          bodyMapWebView.zoomIn(); 
         } 
        }); 
        zoomControls.setOnZoomOutClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          bodyMapWebView.zoomOut(); 
         } 
        }); 

Надеется, что это помогает другим.