2011-08-22 6 views
0

Jetez un oeil à cet exemple:Désactiver, réactivez et le clavier souple ne semble pas toucher

public class TestEditSoftKbdActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    findViewById(R.id.editText1).setFocusable(false); 
    findViewById(R.id.editText1).setClickable(false); 
    findViewById(R.id.editText1).setEnabled(false); 

    findViewById(R.id.editText1).setFocusable(true); 
    findViewById(R.id.editText1).setClickable(true); 
    findViewById(R.id.editText1).setEnabled(true); 

    findViewById(R.id.editText1).invalidate(); 
    findViewById(R.id.editText1).requestLayout(); 
} 

}

Après cette séquence d'appels de la vue édition de texte ne sauterait plus sa douce méthode d'entrée après avoir été touché :(

quelqu'un pourrait-il expliquer ce qui ne va pas ici?

+0

Pourquoi gonflez-vous une vue 8 fois? – Egor

+1

Cela pourrait être quelque chose de simple - essayez le paramètre activé avant focusable - il est tout à fait possible que setFocusable ne fasse rien sur une vue désactivée. – Delyan

+0

@Delyan - raisonnement bien, +1 pour cela seul. Seulement, ça n'a pas aidé, peu importe comment je les ai réarrangés – kellogs

Répondre

0

Si vous voulez fermer le clavier souple pour votre mode texte suivre this link. Voici une solution pour vous. Mais vous devez définir votre propre TextView pour le faire. Il suggère d'utiliser;

public class NoImeEditText extends EditText { 
    public EditTextEx(Context context, AttributeSet attrs) { 
     super(context, attrs);  
    }  
    @Override  
    public boolean onCheckIsTextEditor() { 
     return false;  
    }   
} 

Espérons que cela fonctionne.

Questions connexes