Как убрать фокус с edittext android

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 все еще имел фокус, и клавиатура все еще была видна.

Я пробовал почти все решения этой темы и ни один не работал для меня.

Читайте также:  Dual system android windows

Так вот мой простое решение: (text = EditText)

кстати я не для его решения использовался любой из следующих фрагментов:

И не используется элемент распорки, как вид с шириной и высотой 1dp.

надеюсь, это поможет кому-то: D

The EditText сможет получить фокус, когда пользователь прикоснется к нему. Когда основной макет (активность, диалог и т. д.) становится видимым EditText не получает автоматически фокус, даже если это первый вид в макете.

Источник

android edittext удалить Фокус после нажатия кнопки

У меня есть действие с EditText и кнопкой. Когда пользователь нажимает на EditText, отображается клавиатура, и он может ввести текст — отлично. Но когда пользователь нажимает на кнопку, Я хочу, чтобы EditText больше не был в фокусе, т. е. клавиатура скрывается, пока пользователь снова не нажмет на EditText.

что я могу сделать, чтобы «скрыть фокус» EditText после нажатия кнопки. Некоторый код я могу добавить в метод OnClick кнопки, чтобы сделать это?

С Наилучшими Пожеланиями

8 ответов

поместите это в прослушиватель кнопок:

редактировать

решение выше сломает ваше приложение, если нет EditText ориентирован на. Измените свой код следующим образом:

добавить этот метод в класс:

затем в прослушивателе кнопок вызовите метод следующим образом:

создать поддельный вид, чтобы получить фокус, когда вы пытаетесь clearFocus в своем edittext :

обратите внимание, что этот вид не требует места в макете, поэтому он не имеет значения с вашим макетом.

в классе управления, называют это:

о клавиатуре, скрыть клавиатуру после edtThief имеет фокус.

Я успешно использовал следующее в коде кнопки onClick:

несколько менее сложные, чем другие методы.

самое элегантное решение, которое я мог найти, это:

вы можете сохранить этот метод в служебный класс:

просто вызвав метод hideSoftKeyboad (), он скроет клавиатуру, но, как вы можете видеть, фокус все равно будет присутствовать.

для того, чтобы удалить фокус мы будем использовать простой трюк. Прямо над элементами управления вводом добавьте фиктивный вид, например:

затем написать эту строку кода в том месте, где вы называете метод скрытия фокуса:

поскольку приложение должно передать фокус на следующий элемент управления, он будет передан нашему невидимому виду.

Источник

Как удалить фокус из одного editText

Возможный дубликат:
Остановить EditText от получения фокуса при запуске Activity?

В моем приложении у меня есть один EditText вместе с некоторыми TextViews, кнопкой и spinner. Я считаю, что мой EditText получает фокус, так как он является единственным сосредоточенным видом в этой деятельности. Мой EditText показывает оранжевую рамку и курсор на поле.
Теперь я хотел бы удалить фокус из этого поля (я не хочу, чтобы курсор и граница отображались). Есть ли способ сделать это?
Я смог сфокусироваться на кнопке, выполнив button.seFocusableInTouchMode () и button.requestFocus (). Но это подчеркивает кнопку и, очевидно, не то, что я хочу.

Проверьте этот вопрос и выбранный ответ: Остановите EditText от получения фокуса при запуске Activity. Это уродливо, но он работает, и насколько я знаю, лучшего решения нет.

Вы пытались использовать старый хороший View.clearFocus()

Новый для android .. попробовал

Это работает для меня .. любезно поправьте меня, если что-то не так 🙂

Просто добавить .. у вас макет должен иметь:

Используйте прилагаемый код, чтобы уделить внимание «кому-то другому», это нормально, если у вас есть представление, в котором вы просто хотите убрать клавиатуру и освободить фокус, вам все равно, кто ее получит.

Используйте вот так: FocusHelper.releaseFocus (viewToReleaseFocusFrom)

Doc: Метод перемещается из дочернего представления и вверх по дереву представления и ищет первого ребенка, на который нужно сосредоточиться.

Изменить: вы также можете использовать API для этого:

Я знаю, что слишком поздно, но для кого-то есть такая же потребность editText.setFocusable (false) si, что вы ищете.

У меня была аналогичная проблема с editText, которая сфокусировалась с момента начала работы. Эта проблема я легко фиксировал следующим образом:

Вы добавляете этот фрагмент кода в макет, который содержит editText в xml:

Не забудьте android:id , без него у меня есть ошибка.

Другая проблема, с которой я столкнулся с editText, заключается в том, что, когда он получает первый фокус, фокус никогда не исчезает. Это часть моего кода в java, у него есть editText и кнопка, которая захватывает текст в editText:

Читайте также:  Покет бук для андроида

Надеюсь, что это поможет некоторым из вас!

Просто найдите другой взгляд и сосредоточьте его внимание.

Просто включите эту строку

В сегменте XML, соответствующем макету EditText.

Вам просто нужно очистить фокус от представления, поскольку

Если я правильно понял ваш вопрос, это должно помочь вам:

Поскольку я был в виджетах, а не в активности, которую я сделал:

Я попытаюсь объяснить, как удалить фокус (мигающий курсор) из вида EditText с некоторыми подробностями и пониманием. Обычно эта строка кода должна работать

Но это может быть ситуация, когда у editText все еще есть фокус, и это происходит потому, что метод clearFocus () пытается вернуть фокус в первый фокусный вид в макете деятельности / фрагмента.

Поэтому, если у вас есть только один вид в активности, который является настраиваемым, и это обычно будет вашим видом EditText, тогда clearFocus () снова переключит фокус на это представление, и для вас это будет выглядеть так, что clearFocus () не работает. Помните, что представления EditText являются настраиваемыми (true) по умолчанию, поэтому, если у вас есть только один вид EditText внутри вашего макета, он всегда будет фокусироваться на экране. В этом случае ваше решение будет состоять в том, чтобы найти родительский вид (некоторый макет, ex LinearLayout, Framelayout) внутри вашего файла макета и установить для него этот xml-код

После этого, когда вы выполняете editText.clearFocus (), родительский вид внутри вашего макета будет принимать фокус, и ваш editText будет свободен от фокуса.

Надеюсь, это поможет кому-то понять, как работает clearFocus ().

Я очень старался очистить фокус от текста редактирования. Clearfocus () и фокусируемая, и другие вещи никогда не работали для меня. Таким образом, я придумал идею о подделке фокуса:

Затем в вашем java-коде:

Он скроет клавиатуру и удалит фокус любого edittext с ее помощью. А также, поскольку вы видите, что поддельный редактор выходит из экрана и не может быть замечен

Источник

Android: заставить EditText убрать фокус?

Я хотел бы иметь возможность снять фокус с EditText. Например, если появляется клавиатура, а пользователь скрывает ее с помощью кнопки «назад», я бы хотел, чтобы фокус и курсор исчезли. Как это можно сделать?

19 ответов

У меня есть TabHost с тремя вкладками. Содержимое первой вкладки-это намерение пользовательской операции, а contentview-это относительный макет, содержащий два EditTexts и два CheckBoxes (и кнопку). Каждый checkbox, когда он установлен, включает/отключает один EditText и другой checkbox. и я пошел.

В настоящее время у меня есть проблема с кучей EditText в ListView Каждый элемент ListView определяется следующим образом:

Вы можете сделать так, чтобы курсор и фокус исчезли.

Но обнаружить, когда скрыта ключевая доска, — это тяжелая работа.

Вы можете добавить это к onCreate , и он будет скрывать клавиатуру каждый раз, когда запускается Activity .

Вы также можете программно изменить фокус на другой элемент.

Добавьте LinearLayout перед EditText в свой XML.

Или вы можете сделать то же самое, добавив эти строки для просмотра перед вашим ‘EditText’.

У меня есть android listview с тысячами предметов. Каждый элемент внутри него просто содержит EditText с текстом по умолчанию. После успешной загрузки данных listview. Я нажимаю на один из элементов — в первый раз курсор фокусируется на выбранном EditText > появляется клавиатура мягкого ввода >.

В своей деятельности я получил несколько EditText. Когда я снимаю фокус с одной темы и делаю ее не фокусируемой, фокус отдается другой EditText. Я снимаю фокус таким образом : atxtTag.setFocusable(false); atxtTag.setFocusableInTouchMode(false); atxtTag.clearFocus(); Я не знаю, что перенести фокус.

Снимите фокус, но оставайтесь фокусируемыми:

EditText потеряет фокус, но может снова получить его при новом событии касания.

Это работает на меня

Редактировать в ссылке они предлагают использовать LinearLayout, но простой вид будет работать

Затем, если этот «thief» будет помещен в верхнюю часть макета (чтобы быть первым фокусируемым элементом), будут работать вызовы clearFocus() .

Добавьте эти два свойства в родительский макет (например, линейный макет, относительный макет)

Это сделает трюк 🙂

Вы также можете включить android:windowSoftInputMode=»stateAlwaysHidden» в раздел действий манифеста.

FYI, вы также можете скрыть клавиатуру с помощью кодов:

Читайте также:  Что делать если удалена папка андроид

попробуйте использовать это на вашем представлении это сработало для меня:

Добавьте к вашему родительскому макету, куда вы поместили свой EditText этот android:focusableInTouchMode=»true»

вы должны удалить

если вы не используете его и все та же проблема

пользователь LinearLayout как родитель и набор

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

Чтобы скрыть клавиатуру при запуске активности.. напишите следующий код в onCreate()..

Чтобы очистить фокус и удалить курсор из edittext.

Это мой самый первый ответ на SO, так что не будьте слишком суровы ко мне, если есть ошибки.: D

Есть несколько ответов, плавающих вокруг SO, но я чувствую желание опубликовать свое полное решение, потому что это свело меня с ума. Я хватал кусочки и кусочки со всех сторон, так что простите меня, если я не даю соответствующие кредиты всем . 🙂

(Я упрощу свой результат, потому что в моем представлении слишком много элементов, и я не хочу спамить с этим и постараюсь сделать его как можно более общим. )

Для вашего макета вам нужен родитель ваш EditText и родительский вид , определенный примерно так:

Итак, мне нужно было кое-что здесь. Мне нужно было иметь заполнитель для моего EditText — а это именно так —

сделал так, чтобы EditText не был сосредоточен на входе в действие , а затем и в самом действии при его настройке этот параметр помогает установить на него onTouchListener , чтобы отвлечь внимание от EditText .

Теперь, в действии:

Несколько ответов на бит я нашел на этой странице вопросов, а часть с решением Activity я нашел в этом блоге . rest, который я пропустил, и который мне пришлось выяснить самому, был очищен от фокуса на EditText , который я добавил как внутри setOnEditorActionListener, так и onTouchLister для родительского представления .

Надеюсь, это кому-то поможет и сэкономит их время. 🙂

В комментариях вы спросили, Можно ли сфокусировать другое представление вместо EditText. Да, это может. Используйте метод .requestFocus() для представления, которое вы хотите сфокусировать в начале (в методе onCreate())

Кроме того, фокусировка другого вида вырезает некоторое количество кода. (например, код для скрытия клавиатуры)

У меня была та же проблема. Это заставило меня более, чем сумасшедший.

У меня был длительный диалог с ScrollView что было TableLayout с расширенными LinearLayout, в котором содержится SeekBar и EditText.

Первый EditText всегда имел автофокус после показа диалогового окна и после завершения редактирования текста над клавиатурой EditText все еще имел фокус, и клавиатура все еще была видна.

Я перепробовал почти все решения этой темы, и ни одно из них не сработало для меня.

Итак, вот мое простое решение : (text = EditText)

Кстати, я не использовал ни один из следующих фрагментов, чтобы решить эту проблему:

И я не использовал разделительный элемент, такой как вид с шириной и высотой 1dp.

Надеюсь, это кому-то поможет 😀

Вы также можете включить android:windowSoftInputMode=»stateAlwaysHidden» в раздел действий манифеста.

EditText сможет получить фокус, когда пользователь прикоснется к нему. Когда основной макет (действие, диалог и т. д.) становится видимым, EditText автоматически не получает фокус, даже если это первый вид в макете.

Вы можете избежать любого фокуса на ваших элементах, установив атрибут android:descendantFocusability родительского элемента.

Здесь атрибут android:descendantFocusability, установленный в «blocksDescendants», блокирует фокус на дочерних элементах.

Более подробную информацию вы можете найти здесь .

Похожие вопросы:

Мой макет содержит ListView , SurfaceView и EditText . Когда я нажимаю на EditText , он получает фокус, и появляется экранная клавиатура. Когда я нажимаю где-то за пределами EditText , он все еще.

У меня есть контроль EditText. Если я нажму на него, софткейборд всплывет, однако, когда я нажму enter/ok/return, то управление EditText все еще будет иметь фокус и клавиатуру вверх. Как закрыть.

У меня есть два поля EditText в моей деятельности и кнопка готово. Я хочу, чтобы оба поля EditText теряли фокус (то есть курсор не должен не отображаться ни на одном из них), когда пользователь.

У меня есть TabHost с тремя вкладками. Содержимое первой вкладки-это намерение пользовательской операции, а contentview-это относительный макет, содержащий два EditTexts и два CheckBoxes (и кнопку).

В настоящее время у меня есть проблема с кучей EditText в ListView Каждый элемент ListView определяется следующим образом:

Источник

Оцените статью