Normalmente, você deseja compatibilidade máxima com EditText
o comportamento normal de.
Portanto, você não deve usar android:focusable="false"
porque, sim, a visualização simplesmente não será mais focalizável, o que parece ruim. O drawable de fundo não mostrará mais seu estado "pressionado", por exemplo.
O que você deve fazer é o seguinte:
myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
}
}
});
Ao definir o tipo de entrada para TYPE_NULL
, você evita que o teclado do software apareça.
Ao definir o OnClickListener
e OnFocusChangeListener
, você garante que sua caixa de diálogo sempre será aberta quando o usuário clicar no EditText
campo, tanto quando ele ganha o foco (primeiro clique) quanto nos cliques subsequentes.
Apenas definir android:inputType="none"
ou setInputType(InputType.TYPE_NULL)
nem sempre é suficiente. Para alguns dispositivos, você também deve definir android:editable="false"
em XML, embora esteja obsoleto. Se não funcionar mais, será simplesmente ignorado (como todos os atributos XML que não são suportados).