1

我正在使用一个相当大的布局,其中包括一个 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 似乎没有我期望的自动触发点击事件的副作用。万岁!

4

1 回答 1

1

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

    lv.smoothScrollToPosition(0);

至:

    lv.setSelected(0);

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

于 2013-06-17T22:23:38.263 回答