[英]Android - Adding an item to a scroll view and scroll programmatically
我有一个空的滚动视图。 我用充气机创建一个文本视图,以编程方式将其添加到ScrollView中,然后执行以下操作:
rsView.smoothScrollBy((viewLeft + viewWidth / 2) - center, 0);
但是viewLeft和viewWidth为0,因为尚未测量视图。 关于如何使其正确滚动视图的任何建议?
在添加了它之后,将smoothScrollBy()
调用移至Runnable
并将其发布到新的TextView
的处理程序中,这将使其在布局后运行。 例如:
viewGroup.addView(childView);
childView.post(new Runnable() {
@Override
public void run() {
rsView.smoothScrollBy((childView.getLeft() + childView.getWidth() / 2) - center, 0);
}
}
);
我不确定您如何计算center
,但是如果它取决于新TextView
的尺寸,则还需要将计算移到Runnable
。
在这篇文章中: View的getWidth()和getHeight()返回0,您有很多不错的选择来解决此问题。 特别是我用这个:
收听绘图/布局事件:ViewTreeObserver
一个ViewTreeObserver被激发用于不同的绘图事件。 通常,OnGlobalLayoutListener是获取度量所需的,因此将在布局阶段之后调用侦听器中的代码,因此可以进行测量:
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
rsView.smoothScrollBy((viewLeft + viewWidth / 2) - center, 0);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.