Normalmente, você deseja compatibilidade máxima com EditTexto 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 OnClickListenere OnFocusChangeListener, você garante que sua caixa de diálogo sempre será aberta quando o usuário clicar no EditTextcampo, 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).