例如,我有这样的布局:
<ScrollView> <LinearLayout> <LinearLayout> ... </LinearLayout> <LinearLayout> ... </LinearLayout> <LinearLayout> <TextView> </TextView> </LinearLayout> </LinearLayout> </ScrollView>
我的TextView内容很长.现在我可以手动滚动ScrollView到TextView内容的末尾.在代码中,我写道:scrview.scrollTo(0,800);,scrview是我的ScrollView.它应该滚动到TextView内容的中间.但是在运行时,它只会滚动到TextView的开头,无法滚动TextView内容.
有人知道导致这个问题的原因吗?
编辑:我找到了.好像我太早叫做scrollTo了.运用
scrview.post(new Runnable() { public void run() { scrview.scrollTo(0,800); } });
相反,它的工作原理.为任何遇到同样问题的人发布答案.
解决方法
首先,如果所有的LinearLayouts具有相同的方向,为什么不只是创建一次? 如果我没错,ScrollView只能有1个孩子(1个直接孩子).也许这可能是你遇到问题的原因. 但是,如果你仍然需要这3个LinearLayouts,你可以创建一个FrameLayout作为父级来保存它们并使FrameLayout成为ScrollView的子级