Normalerweise möchten Sie maximale Kompatibilität mit EditText
dem normalen Verhalten.
Sie sollten also nicht verwenden, android:focusable="false"
da die Ansicht einfach nicht mehr fokussierbar ist, was schlecht aussieht. Der Hintergrund, der gezeichnet werden kann, zeigt beispielsweise nicht mehr den Status "gedrückt" an.
Was Sie stattdessen tun sollten, ist Folgendes:
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();
}
}
});
Durch Setzen des Eingabetyps auf TYPE_NULL
verhindern Sie, dass die Softwaretastatur auftaucht.
Durch Setzen von OnClickListener
und stellen OnFocusChangeListener
Sie sicher, dass Ihr Dialogfeld immer geöffnet wird, wenn der Benutzer in das EditText
Feld klickt , sowohl wenn er den Fokus erhält (erster Klick) als auch bei nachfolgenden Klicks.
Nur einstellen android:inputType="none"
oder setInputType(InputType.TYPE_NULL)
ist nicht immer genug. Bei einigen Geräten sollten Sie auch android:editable="false"
XML festlegen , obwohl dies veraltet ist. Wenn es nicht mehr funktioniert, wird es einfach ignoriert (wie alle XML-Attribute, die nicht unterstützt werden).