【发布时间】: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