Lorsque l'utilisateur clique sur une certaine région d'un EditText, je souhaite contempler une boîte de dialogue. J'ai utilisé OnClick pour capturer le clic. Cela fonctionne partiellement: la première fois que l'utilisateur tapote l'editext, le clavier logiciel apparaît et la boîte de dialogue ne le fait pas. Les robinets ultérieurs apportent le clavier, puis la boîte de dialogue (et le clavier disparaît). P> Je soupçonne que cela a quelque chose à voir avec l'editext gagnant la mise au point. P> Voici un code Snip: setInputType (InputType.TYPE_NULL);
5 Réponses :
Peut-être peut-être que cela peut fonctionner ou u peut utiliser /////////////// mon code p> e.hasfocus (); code> puis utiliser
e.setfocusable (false); < / Code> Pour le rendre Écuste P>
Pourriez-vous fournir un peu de perspicacité quant à ce que vous pensez? Merci.
Initialement défini Focus False par E.SetFocusable (FALSE) et dans ONCLICK Fonction le rendent concentrée après avoir montré le dialogue, alors PopUp ira ASE COMMANDEZ-VOUS APPECTER.
Pas de différence significative. Il échoue toujours la première fois et apparaît le clavier sur des robinets ultérieurs. Je mettez les appels setfocusables immédiatement autour de l'appel qui crée la boîte de dialogue.
que de faire de l'entréeType NULL, le clavier n'apparaîtra pas, après le clic régler l'entréeTYPE
Même comportement. Pour être clair, je régle le type d'entrée Retour à Type_Class_text immédiatement après le démarrage de la boîte de dialogue. Peut-être trop tôt, mais pas sûr de l'endroit où le régler.
J'écris ce code et ça marche bien, j'écris juste avant de rejeter la fonction appelée. désolé ça ne vous aide pas
Laissez-nous Continuer cette discussion en chat
Merci pour vos suggestions, ce qui m'a aidé à déterminer une solution de travail. Upvote pour vous.
Essayez Changer de capture Cliquez par OnCliquez sur ONCLICK
this.editText.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { //dialogue popup } return false; } });
Essayé cela. Il serait peut-être possible de faire quelque chose avec AOUTTOUD, mais cela semble très difficile. Faire ce que vous suggérez des pauses GetSelectionStart - Je suis plutôt certain d'Aoudouch avant que la position du curseur ne soit définie.
Merci pour vos suggestions, ce qui m'a aidé à déterminer une solution de travail. Upvote pour vous.
Essayez ceci si cela peut vous aider à vous aider à U.First Time, l'EditText se comportera en tant qu'EitTtext normal et à condition que vous puissiez afficher la boîte de dialogue selon vos besoins
EditText editText; mTim_edittext.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if(!hasFocus){ //statement if(condition){ AlertDialog diaBox = Utils.showErrorDialogBox( "Term in Months Cannot be 0", context); diaBox.show(); } } } });
Merci pour vos suggestions, ce qui m'a aidé à déterminer une solution de travail. Upvote pour vous.
Après de nombreuses expériences, voici deux solutions de travail! Je les ai testé sur mes deux appareils - Nexus 7 en cours d'exécution 4.2.1, Kyocera C5170 runing 4.0.4. Ma préférence est la solution 2.
Pour le premier, l'astuce consistait à déterminer la position du curseur à Aoudouch au lieu d'OnClick, avant que EditText ait une chance de faire C'est le travail - particulièrement avant qu'il ne puisse monter le clavier. P> Un commentaire supplémentaire: assurez-vous de définir Android: WindowsoftInputMode = "StateHidden" dans votre manifeste pour la popup, ou vous obtiendrez le clavier avec le popup. p> voici l'ensemble du code: p> solution 2 strong> p> Celui-ci est en fait plus simple Et je pense, c'est mieux - moins d'effets secondaires. P> Ici, l'astuce consiste à laisser EditTtext faire tout son traitement de clic, puis remplacez-la de manière asynchrone. Le gist est: attendre que le toucher "laisse go" - motionEvent.action_up - puis au lieu de faire votre action à ce moment-là, postez une file d'attente d'événement et faites votre action là-bas. P> Le tout Code: p>
Utilisez ceci ci-dessous Code Snippet
this.editText.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { //dialogue popup } return false; } });