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 :

Faire en sorte que le clavier ne s'affiche pas


Sujet :

Android

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Faire en sorte que le clavier ne s'affiche pas
    Bonjour à toutes et à tous,

    Dans une application qui pourrait ressembler à un ListeView, je crée par code, autant de RelativeLayout contenant des EditText qu'il m'en faut. Ce nombre correspond au nombre de textes différents que j'ai enregistrés et qui sont chargés dans chacun des EditText.

    A la fin du chargement, le clavier s'affiche. J'aurais aimé qu'il ne s'affichât pas .

    Je pense que l'affichage est lié à la création des EditText. Si à chaque fois qu'il s'en crée un, je mets sa propriété setFocusable à faux, le clavier ne vient pas s'afficher. Pour autant je ne peux plus entrer de texte dans mes EditText, c'est pas malin. Donc, à la fin du chargement de tous les EditText, je remets leur propriété setFocusable à vrai et ... ça ne réactive pas le clavier. Par contre, si j'utilise la propriété setFocusableInTouchMode, là, le clavier apparaît, mais il n'a jamais disparu !

    Tout cela se passe bien évidemment au lancement dans : "protected void onCreate(Bundle savedInstanceState)"

    On tourne en rond !

    Je me suis amusé à remettre à vrai la propriété setFocusableInTouchMode non plus dans cette procédure de démarrage, mais dans une procédure que j'appelle en appuyant sur un bouton. Et bien là, ça marche ! Tant que je n'ai pas appuyé sur le bouton, le clavier n'apparaît pas et les EditText sont inactifs. A la suite de l'appui sur le bouton, tous mes editText redeviennent actifs, mais sans que le clavier ne s'affiche. Il s'affiche dès que j'appuie sur un des EditText pour y entrer du texte.

    J'aurais aimé que cette suite d'évènement soit automatique.

    Ci après le code (simplifié) de la classe MEMO où je crée mes EditText :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public class MEMO {
    	public RelativeLayout boiteEdit;
    	private LayoutParams boitePrms;
    	public EditText edit;
    	private LayoutParams editPrms;
    	public boolean editEnCours = false;
    	static Random randomGenerator = new Random();
     
    public MEMO() {};
     
    	public int init(Context context, final int ind, int hB, int couleur, int idPrec, RelativeLayout conteneur) {
    		indX = ind;
    		boiteEdit = new RelativeLayout(context);
    		boiteEdit.setId(Math.abs(randomGenerator.nextInt()));
    		boitePrms = new LayoutParams(LayoutParams.MATCH_PARENT, hB);
    		...
    		boiteEdit.setLayoutParams(boitePrms);
    		...
    		edit = new EditText(context);
    		editPrms = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
    		edit.setLayoutParams(editPrms);
    		edit.setGravity(Gravity.TOP);
    		boiteEdit.addView(edit);
    		conteneur.addView(boiteEdit);
     
    		edit.addTextChangedListener(new TextWatcher() {
    			@Override
    			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    			}
    			@Override
    			public void onTextChanged(CharSequence s, int start, int before, int count) {
    				editEnCours = true;
    			}
    			@Override
    			public void afterTextChanged(Editable s) {
    			}
    		});
    		return boiteEdit.getId();
    	}
    }
    et le code au lancement :

    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
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
    	context = this;
    	...
    	espaceTexte = (RelativeLayout)findViewById(R.id.EspaceTexte	);
    	FCH.dirMemo = FCH.defRep("Memo"); // Le nom du répertoire de stockage est "memo"
    	File[] fchMemo = FCH.listeFch(FCH.dirMemo, "Memo", ".txt");
    	nbMemo = fchMemo.length; // Nombre de MEMO à créer
    	memo = new MEMO[nbMemo]; // Création du tableau de MEMO
    	int idPrec = 0;
    	for (int i = 0; i < nbMemo; i++) {
    		memo[i] = new MEMO(); // Création d'un MEMO
    		idPrec = memo[i].init(context, i, 200, clSable, idPrec, espaceTexte); // initialisation d'un MEMO
    		memo[i].edit.setFocusable(false); // ça, ça bloque le clavier
    		memo[i].edit.setText(FCH.litFichier(FCH.dirMemo, fchMemo[i].getName()));
    		memo[i].edit.setFocusableInTouchMode(true); //ça, ici, le remet comme si je n'avais rien fait
    	}
    Désolé pour la longueur de ce sujet, mais si vous aviez des idées pour que le clavier ne s'affiche que lorsque j'appuie sur un EditText ...

    Cordialement.

    Pierre

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Apparemment, le clavier ne s'affiche pas si, au lieu de placer la création de mes EditText dans la partie Create, je les place dans une commande ultérieure. Mais il faudrait que j'automatise cette commande au lancement.

    Cordialement.

    Pierre

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 587
    Points
    587
    Par défaut
    Sinon, entre les balises de l'activité dans le manifest, tu écris : android:windowSoftInputMode="stateHidden"

  4. #4
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Turvy Voir le message
    Sinon, entre les balises de l'activité dans le manifest, tu écris : android:windowSoftInputMode="stateHidden"
    Super. Je pensais que cela allait cacher le clavier définitivement, mais effectivement cette option, ne le cache que pendant l'activation.

    Merci beaucoup.

    Pierre

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/10/2008, 16h23
  2. [Débutant] Faire en sorte que le nom commence par majuscule
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 29/05/2008, 16h51
  3. Comment faire en sorte que le prog se fasse répéter
    Par LeonHONORE dans le forum Pascal
    Réponses: 3
    Dernier message: 20/04/2008, 21h41
  4. Réponses: 3
    Dernier message: 17/05/2007, 19h30
  5. Réponses: 4
    Dernier message: 02/09/2006, 19h41

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