7

У меня есть GridView внутри NestedScrollView. Я использовал приведенный ниже код для изменения размера GridView всякий раз, когда изменяется содержимое GridView. Это прекрасно работает, однако NestedScrollView прокручивается до самого низа, когда я прокручиваю фрагмент 3 приложения обратно на фрагмент 2 (где находится NestedScrollView). Этого не происходит, если странно прокручивать фрагмент 1 в фрагмент 2. Это также происходит не сразу после изменения размера GridView.Вложенный scrollview автоматически прокручивает вниз

Как я могу скрыть NestedScrollView от прокрутки вниз?

private static void resizeGridView(GridView gridView, int items, int columns) { 
    ViewGroup.LayoutParams params = gridView.getLayoutParams(); 
    params.height = singleGridHeight * items; 
    gridView.setLayoutParams(params); 
    gridView.requestLayout(); 
} 

следующие системные методы вызываются, когда ударяя между фрагментами: enter image description here

+0

Попробуйте http://stackoverflow.com/a/36261638/1621111 –

ответ

50

Добавить android:descendantFocusability="blocksDescendants" в макете ребенка в NestedScrollView

+1

Вы шутите? Это действительно сработало! Огромное спасибо. –

+1

Невероятно, этот трюк в конечном итоге решил * много * небольших сбоев пользовательского интерфейса, которые мы испытывали в течение довольно долгого времени. У нас есть много уровней глубинных вложенных ресайклеров/прокрутки на всех экранах, и эта 1 строка помогла нам понять проблему. –

+0

Герой! Я так долго искал это решение! Невероятно, что это так просто! Спасибо! – romaneso

1

Если добавить nestedScrollView.scrollTo(0, 0); к концу onLayoutChanged() метода в GridView этот вопрос решен. Тем не менее, было бы более разумно предотвратить автоматическую прокрутку nestedScrollView в первую очередь.

Идеи?