Обычно требуется максимальная совместимость с EditText
обычным поведением пользователя.
Так что вы не должны использовать android:focusable="false"
as, да, вид больше не будет фокусироваться, что выглядит плохо. Например, фоновый рисунок больше не будет показывать свое «нажатое» состояние.
Вместо этого вам следует сделать следующее:
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) {
}
}
});
Установив для типа ввода значение TYPE_NULL
, вы предотвратите появление программной клавиатуры.
Установив OnClickListener
и OnFocusChangeListener
, вы убедитесь, что ваше диалоговое окно всегда будет открываться, когда пользователь щелкает в EditText
поле, как при переходе в фокус (первый щелчок), так и при последующих щелчках.
Просто установка android:inputType="none"
или setInputType(InputType.TYPE_NULL)
не всегда достаточно. Для некоторых устройств вы также должны установить android:editable="false"
XML, хотя он устарел. Если он больше не работает, он будет просто проигнорирован (как и все атрибуты XML, которые не поддерживаются).