android:smoothScrollToPosition() 不能正常工作 [英] android: smoothScrollToPosition() not working correctly

查看:47
本文介绍了android:smoothScrollToPosition() 不能正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在将元素添加到与列表视图关联的数组适配器后,我尝试平滑滚动到列表的最后一个元素.问题是它只是滚动到一个随机位置

I'm trying to smoothly scroll to last element of a list after adding an element to the arrayadapter associated with the listview. The problem is that it just scrolls to a random position

arrayadapter.add(item);
//DOES NOT WORK CORRECTLY:
listview.smoothScrollToPosition(arrayadapter.getCount()-1);

//WORKS JUST FINE:
listview.setSelection(arrayadapter.getCount()-1);

推荐答案

当 UI 线程可以处理滚动时,您可能希望告诉 ListView 发布滚动(这就是为什么它不能正确滚动的原因).SmoothScroll 需要做很多工作,而不是仅仅去一个忽略速度/时间/等的位置.(动画"需要).

You probably want to tell the ListView to post the scroll when the UI thread can handle it (which is why yours it not scrolling properly). SmoothScroll needs to do a lot of work, as opposed to just go to a position ignoring velocity/time/etc. (required for an "animation").

因此,您应该执行以下操作:

Therefore you should do something like:

    getListView().post(new Runnable() {
        @Override
        public void run() {
            getListView().smoothScrollToPosition(pos);
        }
    });

这篇关于android:smoothScrollToPosition() 不能正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆