Show soft keyboard in AlertDialog with a WebView inside (Android)

后端 未结 3 1996
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-10 02:36

In my Android app I create an AlertDialog that has a WebView inside. The WebView loads a webpage that requires the user to log in. How

相关标签:
3条回答
  • 2020-12-10 03:06

    There much better solution (with AlertDialog).

    1. Extend WebView class.

      public static class LocalWebView extends WebView {
          public LocalWebView(Context context) {
              super(context);
          }
      
          public LocalWebView(Context context, AttributeSet attrs) {
              super(context, attrs);
          }
      
          public LocalWebView(Context context, AttributeSet attrs, int defStyleAttr) {
              super(context, attrs, defStyleAttr);
          }
      
          @TargetApi(Build.VERSION_CODES.LOLLIPOP)
          public LocalWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
              super(context, attrs, defStyleAttr, defStyleRes);
         }
      
          public LocalWebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) {
              super(context, attrs, defStyleAttr, privateBrowsing);
          }
      
          @Override
          public boolean onCheckIsTextEditor() {
              return true;
          }
      }
      
    2. Use this LocalWebView instead of origin WebView in layout that you set to AlertDialog as content view.

    0 讨论(0)
  • 2020-12-10 03:15

    If it's still relevant, for me the problem was related to an immersive dialog + webview.

    I've override the dialog show method to achieve immersive by setting a flag - NOT FOCUS on the dialog window, once I removed it I lost the immersivnes but now my web dialog pops uo the keyboard...

    0 讨论(0)
  • 2020-12-10 03:22

    It seems that the best solution is to simply create a custom dialog. Custom dialogs do not appear to have the soft keyboard bug at all (it shows up exactly when it has to). Here's some basic code:

    Dialog dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
    dialog.setContentView(R.layout.dialog);
    dialog.setTitle("My great title");
    dialog.setCancelable(true);
    
    dialog.show();
    dialog.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.icon);
    
    WebView vw = (WebView) dialog.findViewById(R.id.wv);
    
    0 讨论(0)
提交回复
热议问题