繁体   English   中英

Android-将项目添加到滚动视图并以编程方式滚动

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM