7

我有一个NestedScrollView内的GridView。每当GridView的内容发生更改时,我都使用下面的代码来调整GridView的大小。这工作正常,但是当我从应用程序的片段3划回片段2(NestedScrollView所在的位置)时,NestedScrollView会滚动到最底部。当从片段1滑动到片段2时奇怪,这不会发生。它也不会在调整GridView大小后立即发生。嵌套滚动视图自动滚动到底部

我怎样才能压制NestedScrollView从滚动到底部? enter image description here

+0

试试这个http://stackoverflow.com/a/36261638/1621111 –

回答

50

添加android:descendantFocusability="blocksDescendants"孩子布局NestedScrollView

+1

你在开玩笑吧?这实际上工作!非常感谢。 –

+1

令人难以置信的是,这个技巧最终解决了我们在相当长一段时间内遇到的许多小UI故障。我们在各种屏幕上有很多级别的嵌套回收器/滚动视图,这1条线最终帮助我们理解了这个问题。 –

+0

英雄!我一直在寻找这个解决方案很长一段时间!难以置信的是这很容易!谢谢! – romaneso

1

如果我添加nestedScrollView.scrollTo(0, 0);到GridView问题得到解决的onLayoutChanged()方法的末尾:片段之间滑动时

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

下面的系统方法被调用。但是,防止nestedScrollView首先自动滚动会更有意义。

想法?