Normalement, vous voulez un maximum de compatibilité avec EditText
's un comportement normal.
Donc vous ne devriez pas utiliser android:focusable="false"
que, oui, la vue sera tout simplement pas être focusable plus qui semble mauvais. L'arrière-plan dessiné ne sera pas montrer sa "touche" état plus, par exemple.
Ce que vous devez faire à la place est la suivante:
myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// showMyDialog();
}
});
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
// showMyDialog();
}
}
});
En définissant le type d'entrée à l' TYPE_NULL
, vous empêcher le logiciel de clavier de popping up.
Par le réglage de l' OnClickListener
et OnFocusChangeListener
, vous vous assurez que votre boîte de dialogue s'ouvre toujours lorsque l'utilisateur clique dans l' EditText
champ, lorsqu'elle obtient le focus (le premier clic) et sur les clics.
Juste paramètre android:inputType="none"
ou setInputType(InputType.TYPE_NULL)
n'est pas toujours suffisant. Pour certains appareils, vous devez définir android:editable="false"
en XML ainsi, même si c'est déconseillé. Si cela ne fonctionne pas plus, il va juste être ignoré (comme de tous les attributs XML qui ne sont pas pris en charge).