- Android: заставить EditText удалить фокус? [дубликат]
- 19 ответов:
- снимите фокус, но оставайтесь фокусируемым:
- android edittext удалить Фокус после нажатия кнопки
- 8 ответов
- Как убрать фокус с одного editText
- 17 ответов
- Android: заставить EditText убрать фокус?
- 19 ответов
- Снимите фокус, но оставайтесь в фокусе:
Android: заставить EditText удалить фокус? [дубликат]
этот вопрос уже есть ответ здесь:
Я хотел бы иметь возможность удалить фокус из EditText. Например, если клавиатура появляется, и пользователь скрывает ее с помощью кнопки «назад», я хотел бы, чтобы фокус и курсор исчезли. Как можно ли это сделать?
19 ответов:
Вы можете добавить это onCreate и он будет скрывать клавиатуру каждый раз, когда начинается activty.
вы также можете программно изменять фокус на другой элемент.
вы можете сделать курсор и фокус отпадают сами
но обнаружить, когда скрытие клавиатуры-это тяжелая работа.
добавить LinearLayout до EditText в XML.
или вы можете сделать то же самое, добавив эти строки для просмотра перед вашим «EditText».
снимите фокус, но оставайтесь фокусируемым:
EditText потеряет фокус, но может получить его снова на новом событии касания.
это работает для меня
Edit в ссылке они предлагают использовать LinearLayout, но простой вид будет работать
затем, если этот » вор » помещается в верхней части макета (чтобы быть первым фокусируемым элементом), вызывает clearFocus() будет работать.
добавьте эти два свойства в родительский макет (например: линейный макет, относительный макет)
Это будет делать трюк 🙂
вы также можете включить android: windowSoftInputMode= «stateAlwaysHidden» в разделе манифеста действий.
но в XML-способе.
FYI, вы также можете скрыть клавиатуру с кодами:
Если вы не используете его и все равно та же проблема
пользователей LinearLayout как родитель и установить
надеюсь, что это поможет вам.
попробуйте использовать это на ваш взгляд это сработало для меня:
добавить в родительский макет, где вы положили свой EditText этой android:focusableInTouchMode=»true»
чтобы скрыть клавиатуру при запуске активности.. напишите следующий код в onCreate()..
чтобы очистить фокус и удалить курсор из edittext.
Это мой самый первый ответ на SO, так что не будьте слишком суровы ко мне, если есть ошибки. : D
есть несколько ответов, плавающих вокруг так, но я чувствую желание опубликовать мое полное решение, потому что это свело меня с ума. Я схватил кусочки со всех сторон, так что простите меня, если я не даю соответствующие кредиты всем. 🙂
(я упрощу свой результат, потому что в моем представлении слишком много элементов, и я не хочу спама с этим и попытаюсь сделать его таким же общим, как вероятный. )
для вашего макета вам нужен родитель ваш EditText и Родительский вид определено что-то вроде этого:
Итак, мне нужно было несколько вещей здесь. Мне нужно было иметь заполнитель для моего EditText-который является то —
это произошло на EditText не быть сфокусированным на входе активность и активность сам при его установке этот параметр помогает, так что вы можете установить onTouchListener на нем, чтобы украсть фокус от EditText.
сейчас в работе:
несколько ответов на биты, которые я нашел на этой странице вопроса, и часть с решением активности, которое я нашел на этом блог. Остальное, что я пропустил, что я должен был выяснить сам, было очищено сосредоточьтесь на EditText который я добавил к обоим внутри setOnEditorActionListener и onTouchLister для Родительский вид.
надеюсь, что это помогает кто-то и экономит их время. 🙂
в комментариях вы спросили, Можно ли сфокусировать другое представление вместо EditText. Да, может. Используйте .requestFocus() метод для представления, которое вы хотите сфокусировать в начале (в методе onCreate ())
также фокусировка другой вид будет вырезать некоторое количество кода. (например, код для скрытия клавиатуры)
вы также можете включить android:windowSoftInputMode=»stateAlwaysHidden» в разделе манифест действий.
у меня была та же проблема. Это сделало меня более чем сумасшедшим.
у меня был расширенный диалог с ScrollView, который имел TableLayout с расширенным LinearLayout, который содержал панель поиска и EditText.
первый EditText всегда имел автофокус после показа диалогового окна и после окончания редактирования текста над клавиатурой EditText все еще имел фокус, и клавиатура все еще была видна.
Я пробовал почти все решения этой темы и ни один не работал для меня.
Так вот мой простое решение: (text = EditText)
кстати я не для его решения использовался любой из следующих фрагментов:
И не используется элемент распорки, как вид с шириной и высотой 1dp.
надеюсь, это поможет кому-то: D
The EditText сможет получить фокус, когда пользователь прикоснется к нему. Когда основной макет (активность, диалог и т. д.) становится видимым EditText не получает автоматически фокус, даже если это первый вид в макете.
Источник
android edittext удалить Фокус после нажатия кнопки
У меня есть действие с EditText и кнопкой. Когда пользователь нажимает на EditText, отображается клавиатура, и он может ввести текст — отлично. Но когда пользователь нажимает на кнопку, Я хочу, чтобы EditText больше не был в фокусе, т. е. клавиатура скрывается, пока пользователь снова не нажмет на EditText.
что я могу сделать, чтобы «скрыть фокус» EditText после нажатия кнопки. Некоторый код я могу добавить в метод OnClick кнопки, чтобы сделать это?
С Наилучшими Пожеланиями
8 ответов
поместите это в прослушиватель кнопок:
редактировать
решение выше сломает ваше приложение, если нет EditText ориентирован на. Измените свой код следующим образом:
добавить этот метод в класс:
затем в прослушивателе кнопок вызовите метод следующим образом:
создать поддельный вид, чтобы получить фокус, когда вы пытаетесь clearFocus в своем edittext :
обратите внимание, что этот вид не требует места в макете, поэтому он не имеет значения с вашим макетом.
в классе управления, называют это:
о клавиатуре, скрыть клавиатуру после edtThief имеет фокус.
Я успешно использовал следующее в коде кнопки onClick:
несколько менее сложные, чем другие методы.
самое элегантное решение, которое я мог найти, это:
вы можете сохранить этот метод в служебный класс:
просто вызвав метод hideSoftKeyboad (), он скроет клавиатуру, но, как вы можете видеть, фокус все равно будет присутствовать.
для того, чтобы удалить фокус мы будем использовать простой трюк. Прямо над элементами управления вводом добавьте фиктивный вид, например:
затем написать эту строку кода в том месте, где вы называете метод скрытия фокуса:
поскольку приложение должно передать фокус на следующий элемент управления, он будет передан нашему невидимому виду.
Источник
Как убрать фокус с одного editText
В моем приложении у меня есть один EditText вместе с некоторым TextViews , кнопкой и счетчиком. Мой EditText получает фокус, поскольку я считаю, что это единственное фокусируемое представление в этой деятельности. Мой EditText отображается с оранжевой рамкой и курсором в поле.
Теперь я хочу убрать фокус с этого поля (я не хочу, чтобы курсор и граница отображались). Есть ли способ сделать это?
Мне удалось сосредоточиться на кнопке, выполнив button.seFocusableInTouchMode() и button.requestFocus() . Но это выделяет кнопку, и это явно не то, что мне нужно.
17 ответов
Отметьте этот вопрос и выбранный ответ: Остановить EditText от получения фокуса при запуске Activity Это некрасиво, но работает, и, насколько я знаю, лучшего решения нет.
Новичок в android .. пробовал
Просто чтобы добавить .. ваш макет должен иметь:
Вы пробовали использовать старый добрый View.clearFocus()
Я попытаюсь объяснить, как удалить фокус (мигающий курсор) из представления EditText, с некоторыми подробностями и пониманием. Обычно эта строка кода должна работать
Но может возникнуть ситуация, когда editText все еще находится в фокусе, и это происходит из-за того, что метод clearFocus () пытается установить фокус обратно на первое фокусируемое представление в макете действия / фрагмента.
Итак, если у вас есть только одно представление в действии, на которое можно сфокусироваться, и это обычно будет ваше представление EditText, тогда clearFocus () снова установит фокус на это представление, и вам будет казаться, что clearFocus () не работает. Помните, что представления EditText по умолчанию настраиваются (true), поэтому, если у вас есть только одно представление EditText внутри вашего макета, оно всегда будет фокусироваться на экране. В этом случае ваше решение будет заключаться в том, чтобы найти родительский вид (некоторый макет, например LinearLayout, Framelayout) внутри вашего файла макета и установить для него этот xml-код
После этого, когда вы выполните editText.clearFocus (), родительский вид внутри вашего макета примет фокус, и ваш editText будет очищен от фокуса.
Надеюсь, это поможет кому-нибудь понять, как работает clearFocus ().
Если Edittext родительский макет равен Linear , тогда добавьте
Как показано ниже
Когда родительский макет Edittext является относительным, тогда
Я знаю, что уже слишком поздно, но для кого-то такая же необходимость editText.setFocusable (false) si, что вы ищете.
Используйте прилагаемый код, чтобы передать фокус «кому-то другому», это нормально, если у вас есть представление, в котором вы просто хотите закрыть клавиатуру и освободить фокус, вам все равно, кто это получит.
Используйте так: FocusHelper.releaseFocus (viewToReleaseFocusFrom)
Док. Метод переходит от дочернего представления вверх по дереву представлений и ищет первого дочернего элемента, которому следует уделить внимание.
Изменить: вы также можете использовать API для этого:
У меня была аналогичная проблема с editText, который получил фокус с момента запуска активности. эту проблему я легко исправил вот так:
Вы добавляете этот фрагмент кода в макет, содержащий editText в xml:
Не забудьте android:id , без него у меня ошибка.
Другая проблема, с которой я столкнулся с editText, заключалась в том, что после того, как он получил первый фокус, фокус никогда не исчезал. это часть моего кода на java, у него есть editText и кнопка, которая фиксирует текст в editText:
Надеюсь, что это поможет некоторым из вас!
Просто найдите другой вид и вместо этого сконцентрируйтесь на нем.
Я очень старался очистить фокус редактируемого текста. clearfocus (), focusable и другие вещи у меня никогда не работали. Поэтому мне пришла в голову идея позволить фальшивому редактируемому тексту получить фокус:
Затем в вашем java-коде:
Он скроет клавиатуру и удалит фокус любого редактируемого текста, в котором она есть. а также, как вы видите, фальшивый текст редактирования находится вне экрана и не виден
Для меня это сработало
Добавьте эти атрибуты в свой EditText
После этого в своем коде вы можете просто написать
Просто включите эту строку
В сегменте XML, соответствующем макету EditText.
Вам просто нужно убрать фокус с вида, как
Если я правильно понял ваш вопрос, это должно вам помочь:
Поскольку я был в виджете, а не в действии, я сделал:
Источник
Android: заставить EditText убрать фокус?
Я хотел бы иметь возможность снять фокус с EditText. Например, если появляется клавиатура, а пользователь скрывает ее с помощью кнопки «назад», я бы хотел, чтобы фокус и курсор исчезли. Как это можно сделать?
19 ответов
У меня есть два поля EditText в моей деятельности и кнопка готово. Я хочу, чтобы оба поля EditText теряли фокус (то есть курсор не должен не отображаться ни на одном из них), когда пользователь нажимает кнопку. Я использую следующий код: private OnClickListener saveButtonListener = new.
В настоящее время у меня есть проблема с кучей EditText в ListView Каждый элемент ListView определяется следующим образом:
Вы можете заставить курсор и фокус исчезнуть с помощью
Но обнаружить, когда скрыта ключевая плата, — это тяжелая работа.
Вы можете добавить это в onCreate , и он будет скрывать клавиатуру каждый раз, когда запускается Activity .
Вы также можете программно изменить фокус на другой элемент.
Добавьте LinearLayout перед EditText в свой XML.
Или вы можете сделать то же самое, добавив эти строки для просмотра перед вашим ‘EditText’.
Снимите фокус, но оставайтесь в фокусе:
EditText потеряет фокус, но может снова получить его при новом событии касания.
Это работает на меня
Отредактируйте ссылку, которую они предлагают использовать LinearLayout, но простой вид будет работать
Затем, если этот «thief» помещен в верхнюю часть макета (чтобы быть первым фокусируемым элементом) , будут работать вызовы clearFocus() .
Добавьте эти два свойства в родительский макет (например, Линейный макет, Относительный макет)
Это сделает трюк 🙂
Вы также можете включить android:windowSoftInputMode=»stateAlwaysHidden» в раздел действий манифеста.
но в XML смысле.
FYI, вы также можете скрыть клавиатуру с помощью кодов:
В своей деятельности я получил несколько EditText. Когда я снимаю фокус с одной темы и делаю ее не фокусируемой, фокус отдается другой EditText. Я снимаю фокус таким образом : atxtTag.setFocusable(false); atxtTag.setFocusableInTouchMode(false); atxtTag.clearFocus(); Я не знаю, что перенести фокус.
У меня есть android listview с тысячами предметов. Каждый элемент внутри него просто содержит EditText с текстом по умолчанию. После успешной загрузки данных listview. Я нажимаю на один из элементов — в первый раз курсор фокусируется на выбранном EditText > появляется клавиатура мягкого ввода >.
попробуйте использовать это на вашем представлении , это сработало для меня:
Чтобы скрыть клавиатуру при запуске активности.. напишите следующий код в onCreate()..
Чтобы очистить фокус и удалить курсор из edittext.
Добавьте в свой родительский макет, куда вы поместили свой EditText этот android:focusableInTouchMode=»true»
вы должны удалить
если вы не используете его и все та же проблема
пользователь LinearLayout в качестве родителя и установить
Надеюсь, это вам поможет.
Это мой самый первый ответ на SO, так что не будьте слишком суровы ко мне, если есть ошибки. 😀
Есть несколько ответов, плавающих вокруг SO, но я чувствую желание опубликовать свое полное решение, потому что это свело меня с ума. Я хватал кусочки и кусочки со всех сторон, так что простите меня, если я не даю соответствующие кредиты всем. 🙂
(Я упрощу свой результат, потому что в моем представлении слишком много элементов, и я не хочу спамить с этим и постараюсь сделать его как можно более общим. )
Для вашего макета вам нужен родитель ваш EditText и родительский вид , определенный примерно так:
Итак, мне нужно было кое-что здесь. Мне нужно было иметь заполнитель для моего EditText — это то, что —
сделал так, чтобы EditText не фокусировался на входе в действие , а затем на самом действии при его настройке этот параметр помогает установить на нем onTouchListener , чтобы отвлечь внимание от EditText .
Теперь, в деятельности:
Несколько ответов на биты, которые я нашел на этой странице вопросов, и часть с решением для активности, которую я нашел в этом блоге . rest, который я пропустил, и который мне пришлось выяснить самому, был очищен от фокуса на EditText , который я добавил как внутри setOnEditorActionListener, так и onTouchLister для родительского представления .
Надеюсь, это поможет кому-то и сэкономит их время. 🙂
В комментариях вы спросили, можно ли сфокусировать другое представление вместо EditText. Да, может. Используйте метод .requestFocus() для представления, которое вы хотите сфокусировать в начале (в методе onCreate())
Кроме того, фокусировка на другом представлении приведет к вырезанию некоторого количества кода. (код для скрытия клавиатуры, например)
У меня была та же проблема. Это сделало меня более чем сумасшедшим.
У меня был расширенный диалог с ScrollView, который имел TableLayout с расширенным LinearLayout, который содержал SeekBar и EditText.
Первый EditText всегда имел автофокус после показа диалогового окна и после завершения редактирования текста над клавиатурой EditText все еще имел фокус, и клавиатура все еще была видна.
Я перепробовал почти все решения этой темы, и ни одно из них не сработало для меня.
Итак, вот мое простое решение : (text = EditText)
Кстати, я не использовал ни один из следующих фрагментов, чтобы решить эту проблему:
И я не использовал разделительный элемент, такой как вид с шириной и высотой 1dp.
Надеюсь, это кому-то поможет 😀
Вы также можете включить android:windowSoftInputMode=»stateAlwaysHidden» в раздел действий манифеста.
EditText сможет получить фокус, когда пользователь коснется его. Когда основной макет (действие, диалог и т. Д.) Становится видимым, EditText автоматически не получает фокус, даже если это первый вид в макете.
Источник