Intereting Posts
Изменить шрифт редактора Android Studio на Mac? Проблема с упаковкой Android: resources.ap_ не существует Как реализовать onBackPressed () в фрагментах? Могу ли я использовать один и тот же идентификатор в разных форматах в Android? Как получить кнопку «Далее» на экранной клавиатуре Android вместо кнопки «Go» в телефонной запинке IntelliJ новый плагин android gradle (0,14 +) IntelliJ Idea не генерирует id в R.java Как изменить имя пакета приложения для Android IllegalStateException: не удается выполнить это действие после onSaveInstanceState с помощью ViewPager Как настроить панель выполнения на Android Поручите скрипт Android Gradle удалить неприглаженные апки и очистить файлы артефакта Поле editText требуется, прежде чем переходить к другому действию Отсутствие анимации при удалении элементов в RecyclerView Как настроить инъекцию зависимостей DAGGER с нуля в проекте Android? Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию?

Сделать editText потерять фокус на заднем нажатии

В моей деятельности у меня есть поле editText. Когда пользователь нажимает на него, editText получает фокус и появляется клавиатура. Теперь, когда пользователь нажимает кнопку аппаратного возврата на телефоне, клавиатура исчезает, но курсор остается в редакторе, т. Е. Он все еще имеет фокус. Можно ли потерять FocusText при нажатии кнопки «Назад»? Я попытался использовать следующий код, но он не работал:

@Override public void onBackPressed() { vibrator.vibrate(Constants.DEFAULT_VIBRATE_TIME); myEditText.clearFocus(); super.onBackPressed(); } 

Solutions Collecting From Web of "Сделать editText потерять фокус на заднем нажатии"

Просто добавьте EditText:

 public class EditTextV2 extends EditText { public EditTextV2( Context context ) { super( context ); } public EditTextV2( Context context, AttributeSet attribute_set ) { super( context, attribute_set ); } public EditTextV2( Context context, AttributeSet attribute_set, int def_style_attribute ) { super( context, attribute_set, def_style_attribute ); } @Override public boolean onKeyPreIme( int key_code, KeyEvent event ) { if ( event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP ) this.clearFocus(); return super.onKeyPreIme( key_code, event ); } } 

И в xml просто используйте <yourPackage.EditTextV2> вместо <EditText> .

Примечание. Возможно, вам придется добавлять / удалять конструкторы этого класса в зависимости от минимального API, который вы поддерживаете. Я предлагаю просто добавить их все и удалить те, чьи вызовы super() становятся подчеркнутыми красным цветом.

Вы можете сделать другое ваше внимание привлекательным, например ImageView . Обязательно сделайте его фокусируемым в сенсорном режиме, используя setFocusableInTouchMode(true) и onResume() чтобы этот View был requestFocus() .

Также вы можете создать фиктивный View с 0 размерами и выполнить те же действия, описанные выше.

Надеюсь, это поможет.

Добавьте представление, подобное следующему выше вашего EditText:

 <LinearLayout android:layout_width="0px" android:layout_height="0px" android:focusable="true" android:focusableInTouchMode="true" /> 

Также, чтобы скрыть клавиатуру, добавьте это в onBackPressed ():

 ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(myEditText.getWindowToken(), 0);