带有页脚的ListView,smoothScrollToPosition无法正常运行

时间:2013-06-17 03:25:12

标签: android listview smooth-scrolling

我正在使用一个相当大的布局,其中包含一个ListView和一个作为页脚的LinearLayout。我首先尝试将其包装在ScrollView中以使整个布局可滚动,但由于ListView和ScrollView彼此不兼容而遇到问题,因为它们都具有可滚动功能。因此,解决方法是将LinearLayout作为页脚包含在ListView中。

现在,在LinearLayout中,我在各个地方都有按钮,用户可以点击这些按钮返回到页面顶部。至少可以说,我从中获得的这种行为很奇怪。

如果我没有向下滚动太多,按钮功能正常。但是,如果我向下滚动太远,那么单击按钮(即使是之前工作的相同按钮)也会导致布局向上滚动到列表视图的大约一半而不是顶部。

这是滚动的方法,它很简单:

    public void backToTop(View view) {
        lv = (ListView)findViewById(R.id.listview);
        lv.smoothScrollToPosition(0);
    }

单击任何按钮时会触发此方法。

我也试过使用“scrollTo(0,0)”函数,但是没有做任何事情。

任何帮助将不胜感激!

**编辑:经过多次测试后,似乎滚动似乎不再正常运行的点是当列表视图在页面上不再可见时。只要我滚过它,按钮就会开始无法正常工作。

编辑2:已解决。我的解决方案:我改变了行

    lv.smoothScrollToPosition(0);

为:

    lv.setSelected(0);

这似乎为用户放置屏幕的任何位置的所有按钮提供了正确的行为。使用setSelected似乎没有我期望自动触发click事件的副作用。万岁!

1 个答案:

答案 0 :(得分:1)

我的解决方案:我更改了backToTop方法的第二行:

    lv.smoothScrollToPosition(0);

为:

    lv.setSelected(0);

这似乎为用户放置屏幕的任何位置的所有按钮提供了正确的行为。使用setSelected似乎没有我期望自动触发click事件的副作用。万岁!