【问题标题】:Scroll a View and refresh content滚动查看并刷新内容
【发布时间】:2012-08-21 08:31:16
【问题描述】:

我使用以下用户界面:

  • 尺寸为 800x600(宽 x 高)的父级相对布局 parentLayout

  • 第二个相对布局childLayout,它是父布局的子布局。 它的尺寸为 800x1000,即大于父布局。

    parentLayout.addView(childLayout);
    

我的目标:使用childLayout.scrollTo(x,y)滚动childLayout

当我使用childLayout.scrollTo(x,y) 时,Android 会滚动childLayout,但不会刷新(重绘)它。效果是,childLayout 被切割成与parentLayout 相同的尺寸。

很遗憾,以下解决方案无法解决问题:

childLayout.scrollTo(x,y);
childLayout.invalidate();
childLayout.requestLayout();

任何想法如何解决这个问题?

【问题讨论】:

  • 只有我一个人不理解“效果是,childLayout 被切割成与 parentLayout 相同的尺寸”的问题吗?你的意思是可见部分还是整个滚动视图?你能添加一些草图吗?
  • 你的理解是正确的。 Android 只滚动 childLayout 的可见部分。 childLayout 的可见部分由它的父视图 parentLayout 定义。 IE。在我的示例中,childLayout 的可见部分的尺寸为 800x600。如果我使用 childLayout.scrollTo(),则需要刷新才能呈现 childLayout 并使不可见部分可见。我的例子和 Android 的 ScrollView 无关。
  • 可能是父母在你添加的那一刻把孩子剪辑到了可见区域。也许将 clipChildren=false 添加到父级会有所帮助?还是在滚动后也在父级上调用无效(等)?或者尝试使用 ScrollView 作为父级并滚动此 scrollView。
  • 是的,WRAP_CONTENT 在 ScrollView 中工作。但是我尝试编写自己的滚动视图类,因为我必须自定义它。不幸的是,Android 的 ScrollView 类的原始代码并没有帮助我理解,为什么视图被(不)剪辑......
  • Anne Droid,你知道如何在使用 WRAP_CONTENT 时使孩子的区域无效吗?我也遇到过同样的问题,消息来源也没有帮助我。

标签: android android-layout invalidation android-scroll


【解决方案1】:

您可以将parentLayout 用作ScrollView 而不是RelativeLayout,并将childLayout 保留为RelativeLayout

【讨论】:

  • 理想情况下,在发布答案时,请尝试使用工作代码示例解决发帖者的问题。它将帮助该人了解您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
相关资源
最近更新 更多