IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Désactiver une touche du clavier virtuel


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut Désactiver une touche du clavier virtuel
    Bonjour à tous et à toutes,


    Ma question est comment désactiver la touche "entrer" du clavier virtuel dans mon application?

    Ensuite, plus largement, comment désactiver n'importe quel touche du clavier et comment récupérer les événements sur celui ci?


    Merci d'avance

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Ma question est comment désactiver la touche "entrer" du clavier virtuel dans mon application?
    Ben simple , il suffit de l'intercepter via la fonction onKeyDown, si la touche appuyé est bien celle que tu veux désactiver , tu ne donne pas la main à l'OS.

    http://developer.android.com/referen...view.KeyEvent).

    Peut être qu'après il y a moyen de travailler directement sur le clavier.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    A ba oui c'est logique! Je n'y avais pas pensé!

    A voir si on peut directement travailler sur le clavier lui même!

    Merci à toi

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    C'était pourtant une bonne idée mais cela ne fonctionne pas!


    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	@Override
    	public boolean onKeyDown (int keyCode, KeyEvent event)
    	{
    		if (keyCode == KeyEvent.KEYCODE_BACK)
    			return true;
     
    		if (keyCode == KeyEvent.KEYCODE_ENTER)
    			return true;
     
    		return super.onKeyDown (keyCode, event);
    	}

  5. #5
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    C'était pourtant une bonne idée mais cela ne fonctionne pas!
    Tu l'as bien mis sur la view que tu ne veux pas que la touche soit activé ?

    Il ne faut pas se contenter de le mettre directement sur l'Activity, mais également sur toutes les views qui composent ton layout en les reliant à celle de ton activity.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    D'accord donc admettons que j'ai un EditText!

    Comment appliquer cette modification sur celui ci? Car effectivement je l'avais mis dans mon Activity et en debuguant on voit bien qu'on exécute jamais ce code ^^.

    Donc prenons cette exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class MaClasse extends Activity
    {
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.monLayout);
       TextView tv = (TextView)findViewById(R.id.maTextView);
    }
     
    @Override
    	public boolean onKeyDown (int keyCode, KeyEvent event)
    	{
    		if (keyCode == KeyEvent.KEYCODE_BACK)
    			return true;
     
    		if (keyCode == KeyEvent.KEYCODE_ENTER)
    			return true;
     
    		return super.onKeyDown (keyCode, event);
    	}
    }

  7. #7
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Arg, j'étais pas réveillé hier, pour ne pas à avoir à surcharger tes view pour modifier ton code dans le onKeyDown utilise cette fonction
    http://developer.android.com/referen...yListener.html

    Dans ton code comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TextView tv = (TextView)findViewById(R.id.maTextView);
    tv..setOnKeyListener(new View.OnKeyListener() {
     
    				@Override
    				public boolean onKey(View v, int keyCode, KeyEvent event) {
    					// TODO Auto-generated method stub
    					return false;
    				}
    			});

    et tu peux même implémenter ton activity avec l'interface View.OnKeyListener et faire un this au lieu de recréer à chaque fois le code .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  8. #8
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour cette réponse.

    Si je lis la description, ceci doit me renvoyer:
    Returns
    True if the listener has consumed the event, false otherwise.
    Donc j’implémente la fonction comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tv.setOnKeyListener(new View.OnKeyListener() {
     
    			@Override
    			public boolean onKey(View v, int keyCode, KeyEvent event) {
    				if (keyCode == KeyEvent.KEYCODE_ENTER)
    				{
    					return true;
    				}
    				return false;
    			}
    		});

    Cependant, ceci ne veut toujours pas fonctionner!



    EDIT:

    Désolé! Je testais sur le mauvais EditText
    Ceci fonctionne très bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Voici le code:
    tv.setOnKeyListener (new View.OnKeyListener ()
    		{
     
    			@Override
    			public boolean onKey (View v, int keyCode, KeyEvent event)
    			{
    				if ((event.getAction () == KeyEvent.ACTION_DOWN)
    						&& (keyCode == KeyEvent.KEYCODE_ENTER))
    				{
    					return true;
    				}
    				return false;
    			}
    		});
    Et un lien plus qu’intéressant car google est notre ami : http://developer.android.com/resourc...formstuff.html
    Merci à toi encore une fois

  9. #9
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    hmm, bizzare, normalement cela devrait marcher , est ce que tu passes bien dans la fonction OnKeyDown de l'activity ou onKeyListener de ta TextView ?
    Essaye de mettre des logs pour savoir comment il intéragis .

    En cherchant un peu j'ai trouvé cela :
    http://developer.android.com/referen...boardView.html
    Tu peux créer ton propre clavier à partir d'un fichier Xml , si tu veux t'amuser.

    Edit :
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver une touche clavier !
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/05/2008, 22h51
  2. Appui virtuel sur une touche du clavier
    Par nitneuk dans le forum Windows
    Réponses: 2
    Dernier message: 07/04/2006, 13h56
  3. [CF][C#/PPC] Comment être à l'écouter d'une touche du clavier ?
    Par freddyboy dans le forum Windows Mobile
    Réponses: 6
    Dernier message: 18/05/2005, 17h32
  4. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo