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
There much better solution (with AlertDialog).
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;
}
}
Use this LocalWebView instead of origin WebView in layout that you set to AlertDialog as content view.
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...
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);