我正在使用一个相当大的布局,其中包含一个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事件的副作用。万岁!
答案 0 :(得分:1)
我的解决方案:我更改了backToTop方法的第二行:
lv.smoothScrollToPosition(0);
为:
lv.setSelected(0);
这似乎为用户放置屏幕的任何位置的所有按钮提供了正确的行为。使用setSelected似乎没有我期望自动触发click事件的副作用。万岁!