Остановить ScrollView от установки фокуса на EditText

Android ScrollView (при прокрутке или fling’d) любит устанавливать фокус EditText, когда это один из его детей. Это происходит, когда вы прокручиваете и затем отпускаете. Есть ли способ остановить это поведение? Я пробовал почти все, о чем я могу думать, и все, что я читал в StackOverflow. Ничто не сработало для меня. Ниже приведен пример макета, если вы хотите его протестировать. Я отчаянно пытаюсь остановить это немое поведение.

     

Это работает. Не уверен, что это лучшее решение или нет.

 // SCROLL VIEW HACK // BOGUS ScrollView view = (ScrollView)findViewById(R.id.scrollView); view.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); view.setFocusable(true); view.setFocusableInTouchMode(true); view.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.requestFocusFromTouch(); return false; } }); 

Во-первых, вы можете удалить родительский элемент ScrollView. Во-вторых, добавьте параметры фокусировки для ребенка (только один ребенок на ScrollView):

 android:descendantFocusability="beforeDescendants" android:focusable="true" android:focusableInTouchMode="true" 

Вот как выглядит ваш xml:

                

Также обратите внимание, что у вас несколько идентификаторов с одинаковым именем. Попробуйте дать им уникальные имена.


Если вы хотите только скрыть мягкую клавиатуру, и пусть EditText все еще имеет фокус, вы можете сделать это, добавив следующее свойство вашей активности в манифест :

 android:windowSoftInputMode="stateHidden" 

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

 ScrollView sv = (ScrollView)findViewById(R.id.scrollView); sv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { sv.clearFocus(); return false; } }); 

да, это работает, просто установите прослушиватель для четкой фокусировки. и это лучше, чем запрос requestFocusFromTouch в другое представление «x», что приведет к той же проблеме – прокрутку к представлению «x».

Interesting Posts

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

Почему Microsoft Edge открывает некоторые локальные веб-сайты, но не другие, где доменное имя маршрутизируется до 127.0.0.1 в файле hosts

Нестатическая переменная не может ссылаться на статический контекст

Простой медиаплеер воспроизводит mp3 с пути к файлу?

Больше не может «переключать пользователя» в Windows 7

Как зарегистрировать пользовательские значения по умолчанию, используя NSUserDefaults, без перезаписывания существующих значений?

Какое программное обеспечение можно использовать для дешифрования хэша паролей Mac OS X?

Как отлаживать «контрасты могут быть применены только к факторам с 2 или более уровнями»?

Насколько важны рекомендации по питанию для видеокарт

Мерцающий черный экран после kb2919355 (Windows 8.1 Update 1) – нет доступа к ОС – нет безопасного режима – невозможно восстановить систему

Java PDF Viewer

Параметрированный запрос для MySQL с C #

Как получить параметры из URL с JSP

Что делает опция «Оптимизировать код» в Visual Studio?

Что вызывает ошибку «Не удалось получить доступ к jar-файлу»?

Давайте будем гением компьютера.