我有ListView
我打电话给smoothScrollBy()
。 95%的时间,smoothScrollTo()
表现如预期。然而,有时它不会在预定的位置结束!我已经证实我给它的价值相同。我注意到,当出现错误时,平滑滚动不是那么顺利,但是我的应用程序没有其他任务可以控制。
我不太确定后台发生了什么,但可能的罪魁祸首是垃圾收集。
在这种情况下,95%的准确度不够好。我将不得不实施某种纠正机制,以确保ListView
在这些情况下落在正确的位置。
除了简单地调用smoothScrollBy()
之外,还有更好的方式来使用view.smoothScrollBy(distance, time);
吗?
答案 0 :(得分:6)
尝试其中一些:
Listview有自己的滚动机制。它会在添加内容时滚动。
将listview height(android:layout_height)分配给match_parent或fill_parent。
如果在工作线程中分配适配器。不要在线程中执行任何UI操作。
如果这些都没有解决问题。请将您将适配器分配到列表视图的代码(如果有)。或相关代码。
xml布局代码。
希望这有帮助。
答案 1 :(得分:5)
有时候会因为计时问题。将视图添加到列表视图中并将时间添加到
view.smoothScrollBy(distance, time);
listview或ui仍然无需刷新。所以在具有特定延迟的视图帖子中执行此操作。例如
view.postDelayed(new Runnable{
view.smoothScrollBy(distance, time);
},1000);