【问题标题】: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();
}

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

【问题讨论】:

标签: android android-fragments gridview android-nestedscrollview


【解决方案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 自动滚动会更有意义。

想法?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 2020-03-26
    • 2016-11-13
    • 1970-01-01
    • 2011-08-31
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多