Android view set focus

Programmers Sample Guide

All one can think and do in a short time is to think what one already knows and to do as one has always done!

Android set focus on a View inside a ScrollView

If you are using a XML layout then you must set the view focusable using android:focusable and android:focusableInTouchMode. If you are using java code to generate layout then you can use methods setFocusable(boolean) and setFocusableInTouchMode(boolean). You can then set the focus to a view using public method requestFocus().

The framework will handle routine focus movement in response to user input. This includes changing the focus as views are removed or hidden, or as new views become available. Views indicate their willingness to take focus through the isFocusable() method. To change whether a view can take focus, call setFocusable(boolean). When in touch mode (see notes below) views indicate whether they still would like focus via isFocusableInTouchMode() and can change this via setFocusableInTouchMode(boolean).

Boolean that controls whether a view can take focus. By default the user can not move focus to a view; by setting this attribute to true the view is allowed to take focus. This value does not impact the behavior of directly calling requestFocus(), which will always request focus regardless of this view. It only impacts where focus navigation will try to move focus.

Must be a boolean value, either «true» or «false».

This corresponds to the global attribute resource symbol focusable. Related Methods

Boolean that controls whether a view can take focus while in touch mode. If this is true for a view, that view can gain focus when clicked on, and can keep focus if another view is clicked on that doesn’t have this attribute set to true.

Must be a boolean value, either «true» or «false».

This corresponds to the global attribute resource symbol focusableInTouchMode. Related Methods

public final boolean requestFocus (int direction)

Call this to try to give focus to a specific view or to one of its descendants and give it a hint about what direction focus is heading. A view will not actually take focus if it is not focusable (isFocusable() returns false), or if it is focusable and it is not focusable in touch mode (isFocusableInTouchMode()) while the device is in touch mode. See also focusSearch(int), which is what you call to say that you have focus, and you want your parent to look for the next one. This is equivalent to calling requestFocus(int, Rect) with null set for the previously focused rectangle.

Читайте также:  Не работает блютуз после обновления андроид

Parameters
direction One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, and FOCUS_RIGHT
Returns

Whether this view or one of its descendants actually took focus.

public final boolean requestFocus ()

Call this to try to give focus to a specific view or to one of its descendants. A view will not actually take focus if it is not focusable (isFocusable() returns false), or if it is focusable and it is not focusable in touch mode (isFocusableInTouchMode()) while the device is in touch mode. See also focusSearch(int), which is what you call to say that you have focus, and you want your parent to look for the next one. This is equivalent to calling requestFocus(int, Rect) with arguments FOCUS_DOWN and null.

Whether this view or one of its descendants actually took focus.

Источник

How set focus on View Android development example

Set focus on a View in Android application example source code for Button, EditText, View, TextView, isFocused(), requestFocus() .

397LW NO topic_id

Další témata . (Topics)

Accessibility Missing contentDescription attribute on image | accessibility-missing-contentdescription-attribute-on-image

Android Emulator warning:[Accessibility] Missing contentDescription attribute on image

Workaround example code:

Difference between logical operators and or Java | difference-between-logical-operators-and-or-java

Basic difference remember it.
if(TRUE && TRUE && TRUE) return TRUE otherwise FALSE

if(FALSE || FALSE || FALSE) return FALSE otherwise TRUE

Logical operator and &&
If all conditions/operands is TRUE return TRUE, otherwise return FALSE

Logical operator or ||
The logical OR operator (||) returns the boolean value true if either or both operands is true and returns false otherwise.
If one operands is TRUE, condition is TRUE:

TableRow TableLayout table row add delete remove removeview addview Android example | tablerow-tablelayout-table-row-add-delete-remove-removeview-addview-android-example

TableRow TableLayout table row add delete remove removeview addview get table row index indexOfChild create table row dynamically TextView dynamically Android example
Main.java

main.xml ScrollView, TableLayout, TableRow, TextView Android xml layout example

ADT Bundle 22.6.2 have memory leak. | adt-bundle-22-6-2-have-memory-leak

If I trying
android-sdk_r22.6.2-windows.zip
adt-bundle-windows-x86_64-20140321.zip
and open xml layout graphic editor and xml layout file
memory continues to grow to crashes Eclipse

I have to install old version adt-bundle-windows-x86-20131030.zip
what working fine.
I had to delete .metadata folder in workspace if I want open old version ADT

Scroll to certain position on application Android example code | scroll-to-certain-position-on-application-android-example-code

ScrollTo(), getTop(), getBottom(), getLeft(), getRight(), ScrollView, LinearLayout Android Java xml example.
How get position of a View.
MainClass.java

main.xml

Editace: 2011-10-09 13:08:13
Počet článků v kategorii: 397
Url:how-set-focus-on-view-android-development-example

Источник

Android WebView – настройка фокуса фокуса HTML с использованием Javascript

У меня есть приложение только с видимым WebView компонентом, который используется для отображения некоторого динамически сгенерированного HTML (также можно запустить Javascript). Он активирован для WebView .

На нескольких страницах я пытаюсь установить фокус одного из входных текстовых полей после завершения загрузки страницы – не через Тело onLoad() , а вместо этого с помощью вызова JS после страница закончила загрузку, т.е. в onPageFinished() . Большая часть javascript выполняет тонкие

Но когда я использую один и тот же вызов для выполнения document.getElementById(‘text1’).focus() – курсор достигает элемента, но Soft Keyboard не выскочит. Тот же код javascript, который выполняется с помощью кнопки на странице, имеет желаемый эффект.

Читайте также:  Центр тем андроид не работает

Я добавляю исходный код, который имеет 3 кнопки

  • Focus Text1 – Поместите курсор на текст1 и всплывает Softkeyboard.
  • Java Focus Text1 – вызывает Java для выполнения того же JS. Отображает только курсор и не выталкивает клавиатуру.
  • Java Focus Text1 And Keyboard Open – Вызывает JS из Java и Force Keyboard open.

Я понимаю, что выполнение JS должно работать одинаково, независимо от того, выполняется ли оно из браузера с помощью кнопки/события или как отправлено с Java через WebView.loadURL() .

Здесь мои Запросы

  • Мне что-то не хватает при использовании Button#2 ? Это как мой текущий код, и я вижу только, что курсор установлен, но SoftKeyboard не открывается.
  • Когда я использую логику, написанную в Button#3 , я несколько раз не вижу курсора в поле, но дает мне желаемый эффект, и курсор становится видимым, когда я набираю что-то на всплывающей клавиатуре.
  • Может ли поведение, которое я вижу в Button#2 , быть ошибкой в ​​исполнении Android JS? Или может быть, что в WebView нет фокуса, почему отображается только курсор? Я также пробовал webview.requestFocus() – я не могу написать requestFocusOnTouch() , поскольку он является единственным View I, и я ожидаю, что он сфокусирован автоматически.

Код Java, демонстрирующий поведение

Обновление решения 24-06-2011
Чтобы выполнить эту работу, вам нужно использовать wv.requestFocus(View.FOCUS_DOWN) непосредственно перед фактическим вызовом фокуса JS. Я изменил метод javaFocus() выше на правильную версию ниже. Раньше, когда я упоминал, что я использовал requestFocus(), я использовал это, когда WebView был инициализирован в методе onCreate() . Основное различие заключается в том, что теперь мы заставляем WebView получать фокус каждый раз непосредственно перед выполнением Javascript document.getElementById(«text1»).focus(); .

Кроме того, чтобы убедиться, что эта проблема не была исправлена ​​из-за фокуса, вызванного с помощью touch и т.д., я использую фоновый поток для запуска javaFocus() через 5 секунд отображаемого WebView. Модифицированный onCreate() приведен ниже.

Возможно, веб-просмотр не имеет фокуса приложения. Попробуйте выполнить;

Источник

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 не получает автоматически фокус, даже если это первый вид в макете.

Источник

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