77 votes

EditText.setFocusable (false); ne peut pas être défini sur vrai. :/

Une situation très étrange, j'ai ce code qui est censé rendre un champ EditText non modifiable si SpnSelected.equals("Service") et modifiable à nouveau, si c'est autre chose.

final EditText etAdd = (EditText)dialogAddTextView.findViewById(R.id.etSymb);

    if ( SpnSelected.equals("Service") )
    {
        etAdd.setFocusable(false);
        TextView tvInfo = (TextView)dialogAddTextView.findViewById(R.id.tvAddTextInfo);
    }
    else
    {
        etAdd.setFocusable(true);
        TextView tvInfo = (TextView)dialogAddTextView.findViewById(R.id.tvAddTextInfo);
    } 

Il le rend effectivement non modifiable, mais il ne permet pas de le rendre modifiable avec etAdd.setFocusable(true);

Des idées sur quoi faire? Merci! :)

0 votes

Ne serait-il pas plus approprié d'utiliser setEnabled(true/false) ?

0 votes

Fonctionne. seulement, cela rend le textedit un peu gris, comme s'il était désactivé. par conséquent, setFocusable serait plus préférable, seulement, cela ne fonctionne pas. :)

242voto

Bala R Points 57552

Essayer

etAdd.setFocusableInTouchMode(true);
etAdd.setFocusable(true);

au lieu de simplement

etAdd.setFocusable(true);

8 votes

Vous me faites gagner beaucoup de temps.

16 votes

Selon la documentation pour .setFocusableInTouchMode() l'appel de .setFocusableInTouchMode(true) rend l'appel de .setFocusable(true) inutile. C'est-à-dire que vous n'avez besoin d'appeler que etAdd.setFocusableInTouchMode(true);

0 votes

Vous êtes une menthe (Un sauveur de vie :))

3voto

Shohel Rana Points 530

J'utilise ci-dessous le code pour mettre le focus et cliquer sur supprimer et ajouter :

Supprimer : secondFirstHalfEditText.setClickable(false); secondFirstHalfEditText.setFocusable(false);

Ajouter :

editText.setClickable(true);
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);

Doit utiliser ceci pour activer l'EditText >>

editText.setFocusableInTouchMode(true);

Cela fonctionne parfaitement pour moi

2voto

Yohanfou Points 69

Cette solution a fonctionné pour moi :

 EditText test3 = (EditText) findViewById(R.id.edittext);
 CheckBox check1 = (CheckBox) findViewById(R.id.checkBox1);
 test3.setClickable(false);
 test3.setEnabled(false);
 test3.setFocusable(false);
 check1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
      if(check1.isChecked()){
         test3.setText("");
         test3.setClickable(false);
         test3.setEnabled(false);
         test3.setFocusable(false);
      } else {
         test3.setClickable(true);
         test3.setEnabled(true);
         test3.setFocusable(true);
         test3.setFocusableInTouchMode(true);
      }
    }
 });

Après avoir coché la case à cocher, le champ de texte est désactivé.

J'espère que cela aidera quelqu'un :)

0voto

Vanya Rachel Points 141

Mon code fonctionne bien en utilisant editText.requestFocus();

-2voto

NewProggie Points 417

Vous devez définir l'EditText sur

etAdd.setEnabled(false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X