i m utilise webview dans AlertDialog pour authentifier l'utilisateur à Twitter. Mais lorsque je clique sur le champ dans webview, le clavier Android ne s'ouvre pas. Voici mon code qui montre comment j'ai ajouté Webview dans la boîte de dialogue d'alerte. J'appelle implicitement clavier Android, mais il ouvre un clavier derrière la boîte de dialogue d'alerte.
Voici mon code. P>
public static void webViewDialog(final String authorizationURL, final int type) { final boolean correctPin; System.out.println("In webViewDialog"); container = new LinearLayout(context); container.setOrientation(LinearLayout.VERTICAL); container.setMinimumWidth(200); container.setMinimumHeight(320); webView = new WebView(context); webView.setMinimumWidth(200); webView.requestFocusFromTouch(); webView.setMinimumHeight(380); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new TwitterWebViewClient()); webView.loadUrl(authorizationURL); webView.setBackgroundColor(0xFFbbd7e9); container.addView(webView); Builder webDialog = new AlertDialog.Builder(context); webDialog.setView(container).setTitle("Twitter Login") .setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (type == 0) { twitterPinCodeDialog(); dialog.dismiss(); } } }).show(); showVirtualKeyboard(); } public static void showVirtualKeyboard() { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { InputMethodManager m = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); if(m != null) { // m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT); } } }, 100); }
5 Réponses :
Voici ma solution à ce problème:
Mettez un texte mannequin Modifier et définissez la visibilité vers Exemple: p> GEL) CODE> et l'ajoutez-le à un linearlayout linéarlayout, après avoir ajouté la validation Web à la disposition. P>
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LinearLayout wrapper = new LinearLayout(this);
WebView webView = new WebView(this);
EditText keyboardHack = new EditText(this);
keyboardHack.setVisibility(View.GONE);
webView.loadUrl(url);
wrapper.setOrientation(LinearLayout.VERTICAL);
wrapper.addView(webView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
wrapper.addView(keyboardHack, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
builder.setView(wrapper);
builder.create().show();
J'ai ajouté un exemple d'extraction à votre message pour faciliter le "brancher" et l'utiliser, mais n'hésitez pas à le modifier si vous ne le voulez pas là-bas.
@ RICHARDJ.ROSSIII Je sais que je suis en retard à la fête, mais je veux juste souligner que vous da Da Real MVP, Richard.
Cette solution fonctionne parfaitement. Mais je me demande quelle est la science derrière elle? @ Richardj.rossiii savez-vous pourquoi?
La raison pour laquelle votre clavier peut ne pas afficher, est probablement parce que vous utilisez un périphérique qui a déjà un clavier dur. Tout appareil avec un clavier physique n'a pas besoin d'afficher un clavier doux ... c'est pourquoi il ne figure pas. Parce que votre appareil ou votre émulateur a un clavier dur physique. P>
Je souffre également de ce problème, j'ai résolu ce problème en personnalisant la boîte de dialogue, voici mon code de dialogue personnalisé, espérons que cela est utile complet pour vous.
Serait utile de savoir quelle est la solution au lieu de simplement coller dans un code source. Cela ne répond pas à la question.
J'utilise un popupwindow avec une vision Web de l'intérieur et expérimenté le même problème, mais si je me suis concentré sur True dans le parent, le problème disparaît: espère que cela vous aide! < / p> p>
J'ai eu un problème similaire et j'ai résolu de cette manière:
Je remplace la méthode sur le onecreaDialog () strong> méthode je viens d'ajouter ces. p>
Dans mon cas, je voulais montrer une boîte de dialogue sans titre. Donc, c'est vrai que le dialoguilder s'occupe de la création de la vue de la boîte de dialogue, j'ai décidé de remplacer le Oncreeview () Strard> et appelez simplement le Super.OncreateDedialog () Strong> et ajoutez ma configuration de la fenêtre. P > p>
Vous devez explicitement définir une vue.ontouchlistener. Voir ma question précédente: Formulaire de taraudage dans WebView ne fait pas Afficher le clavier souple
Vous êtes mon ami..mais i m m ouverture webview in alerte boîte de dialogue .Quand je touche sur le clavier Webview Android ouvre mais derrière la boîte de dialogue d'alerte. N'importe pas en haut de la vue.
Yuppi ... j'ai résolu le problème.J'ai mis un texte mannequin éditer et définir sa visibilité à gone.et Ajoutez-le après l'ajout de webview en aménagement linéaire..so tout ça va. Quand je touche sur n'importe quel champ, clavier Android Open .
@Niravbhandari je me demande pourquoi l'ajout d'une vue invisible résout le problème?