Остановить ScrollView от автоматической прокрутки до EditText

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

У вас есть несколько представлений ( Button s, TextView s и т. Д.) В ScrollView , одним из которых является EditText . При нажатии кнопки в ScrollView , ScrollView прокручивается вниз до EditText (вне экрана). Это нежелательно, поскольку есть другие элементы, которые вы не хотите прокручивать за пределы экрана.

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

Я подумываю о расширении ScrollView и переопределении некоторых методов, таких как findFocusableViewInBounds , но у меня такое чувство, что я попаду в еще больше неприятностей.

Пожалуйста, помогите, если сможете.

Я экспериментировал с такими вещами, как высота 0 EditText вверху моего ScrollView , добавляя свойства элемента Next Focusable к другим элементам в ScrollView и т. Д. Я полагаю, что одним из «взломов» может быть заставить EditText терять фокус, когда виртуальная или ручная клавиатура скрывается или что-то в этом роде.

42
задан Bugs Happen 12 February 2018 в 11:18
поделиться