嵌套滚动视图自动滚动到底部

Posted

技术标签:

【中文标题】嵌套滚动视图自动滚动到底部【英文标题】:Nested scrollview automatically scrolls to bottom 【发布时间】:2016-10-08 02:05:23 【问题描述】:

我在 NestedScrollView 中有一个 GridView。每当更改 GridView 的内容时,我都使用下面的代码来调整 GridView 的大小。这很好用,但是当我从应用程序的片段 3 滑回片段 2(NestedScrollView 所在的位置)时,NestedScrollView 会滚动到最底部。奇怪的是,从片段 1 滑动到片段 2 时不会发生这种情况。它也不会在调整 GridView 的大小后直接发生。

如何阻止 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();

在片段之间滑动时会调用以下系统方法:

【问题讨论】:

试试这个***.com/a/36261638/1621111 【参考方案1】:

在 NestedScrollView 的子布局中添加android:descendantFocusability="blocksDescendants"

【讨论】:

你在开玩笑吗?这确实有效!非常感谢。 难以置信,这个技巧最终解决了我们已经经历了很长一段时间的 许多 小 UI 故障。我们在各种屏幕中都有很多层次的嵌套回收器/滚动视图,这 1 行终于帮助我们理解了问题。 英雄!我一直在寻找这种解决方案很长时间!令人难以置信的是,这很容易!谢谢! EditText 在此之后无法聚焦 像魅力一样工作!!!,只是添加了一件事,添加上述解决方案后,EditText 将不会集中在 EditText 触摸侦听器上,只需添加 yourChildView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); .您的 EditText 将获得焦点。【参考方案2】:

如果我将 nestedScrollView.scrollTo(0, 0); 添加到 GridView 的 onLayoutChanged() 方法的末尾,问题就解决了。但是,首先阻止nestedScrollView 自动滚动会更有意义。

想法?

【讨论】:

以上是关于嵌套滚动视图自动滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章

uiscrollview 不能滚动到底部

uiscrollview无法滚动到底部

使用Android ViewPager2在回收器视图中滚动到底部时自动更改选项卡项

ionic 视图滚动到顶部

奇怪的错误,collectionView 视图滚动到倒数第二条消息,当试图滚动到底部

使用动态单元格高度时将表格视图滚动到底部