Zwykle potrzebujesz maksymalnej zgodności z EditText
normalnym zachowaniem.
Więc należy nie używać android:focusable="false"
jako, tak, widok po prostu nie być aktywowana już który wygląda źle. Na przykład tło do rysowania nie będzie już pokazywać stanu „wciśniętego”.
Zamiast tego powinieneś zrobić:
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) {
}
}
});
Ustawiając typ wejścia na TYPE_NULL
, zapobiegasz wyskakiwaniu klawiatury programowej.
Ustawiając OnClickListener
i OnFocusChangeListener
, upewniasz się, że okno dialogowe będzie zawsze otwierane po kliknięciu przez użytkownika w EditText
polu, zarówno gdy zostanie ono aktywowane (pierwsze kliknięcie), jak i po kolejnych kliknięciach.
Samo ustawienie android:inputType="none"
lub setInputType(InputType.TYPE_NULL)
nie zawsze wystarczy. W przypadku niektórych urządzeń należy również ustawić android:editable="false"
w języku XML, chociaż jest on przestarzały. Jeśli to już nie działa, zostanie po prostu zignorowane (tak jak wszystkie atrybuty XML, które nie są obsługiwane).