2012-10-23 4 views
11

Possible en double:
Disable EditText blinking cursorretirer le curseur de editText

J'ai 2 champs de EditText dans mon activité avec un texte en elle:

EditText nameText=(EditText) findViewById(R.id.update_name_text); 
nameText.setText(Info.getName()); 

EditText phone=(EditText) findViewById(R.id.phone_number); 
phone.setText(Info.getPhoneNo()); 

Quand je lance le app sur mon appareil et appuyez sur le champ nameText, un curseur et un clavier apparaissent. Cependant, quand je cache le clavier, le clavier disparaît mais le curseur reste. Comment puis-je rendre le curseur invisible également.

Lorsque j'appuie sur entrée à partir de nameText, le curseur se place sur le champ phone et le clavier est toujours visible. Mais lorsque je cache le clavier ou que j'appuie sur la touche Entrée du champ phone, le clavier disparaît mais le curseur reste.

Y a-t-il un moyen (autre que l'utilisation de setOnEditorActionListener) de rendre le curseur invisible également dans les situations ci-dessus?

+2

Vous êtes en train de résoudre les problèmes liés à la non-résolution. Qu'en est-il des périphériques de clavier matériel par exemple? –

Répondre

31

pour retirer le curseur de edittext vous devez définir

nameText.setFocusable(false); 

et curseur visible institué

nameText.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       nameText.setFocusableInTouchMode(true); 

       return false; 
      } 
}); 

affiche le curseur dans edittext ...

+13

Je ne veux pas que le curseur soit invisible en permanence. Je veux seulement invisible quand le clavier est caché – Ankush

+0

son travail pour moi .. mais pas besoin de mettre 'nameText.setFocusableInTouchMode (true);' –

+0

@AmitabhaBiswas Lorsque l'utilisateur touche à nouveau le même edittext, le curseur doit être visible. – Sumant

7

android:cursorVisible en XML ou setCursorVisible() dans le code pour masquer/afficher le curseur, et vous pouvez utiliser la méthode expliquée here pour déterminer quand le clavier est apparu & disparu.

+2

Je ne veux pas que le curseur soit invisible en permanence. Je veux seulement qu'il soit invisible quand le clavier est caché - – Ankush

1

Dans le fichier Xml Vous peut voir l'attribut <requestFocus> a été ajouté automatiquement pour le texte EditText.

Chaque fois que l'activité commence, votre EditText reçoit le focus.

Alors supprimez-le d'abord et essayez ...

MIS À JOUR Réponse:

Si vous ne voulez pas modifier le champ nameText

Vous pouvez utiliser

nameText.setEnabled(false); 

Et si u veut Modifier il certains cas,

Vous pouvez faire,

nameText.setEnabled(true); 

vous pouvez toujours mettre à jour le champ nameText par programatically,

pour l'exemple, en utilisant nameText.setText(Info.getname());

Si vous voulez que l'utilisateur à des modifications sur le texte visible, alors vous pouvez faire

nameText.setEnabled(true); 

Cela fonctionnera comme vous l'attendez.

+0

J'ai déjà supprimé l'attribut 'requestfocus' – Ankush

+0

Voir la réponse mise à jour dans le message –

Questions connexes