【发布时间】:2013-06-17 03:25:11
【问题描述】:
我正在使用一个相当大的布局,其中包括一个 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)”函数,但没有任何效果。
任何帮助将不胜感激!
**edit:在进行了更多测试之后,滚动似乎不再正常工作的点似乎是列表视图在页面上不再可见。当我滚动过去时,按钮开始无法正常工作。
编辑 2:已解决。我的解决方案:我换行了
lv.smoothScrollToPosition(0);
到:
lv.setSelected(0);
这似乎在用户放置屏幕的任何位置为我的所有按钮提供了正确的行为。使用 setSelected 似乎没有我期望的自动触发点击事件的副作用。万岁!
【问题讨论】:
-
您如何设法将整个列表滚动到屏幕外。我的意思是它停在页面右侧的底部。可以发截图吗。另外,只需在 listView 上尝试 requestFocus 一次。
-
我的意思是当列表视图的列表部分离开屏幕时。如果我继续滚动浏览我附加的大页脚布局,列表视图将离开屏幕。当我到达页脚的末尾时,我无法再向下滚动。
标签: android listview smooth-scrolling