所以我有一个 ListView 以及向上和向下按钮。
我的目标是每次按下其中一个按钮时,通过它的高度滚动 ListView,简单的向上/向下导航。
滚动确实有效,有点。当我按下时,ListView 每次滚动时都会滚动正确的距离。
但是,只有向上按钮按预期工作。向下按钮有问题,我认为这是由于ListView 的第一个可见滚动位置未更新。
当我按下时,会发生 onNavigationDownPressed() 方法,如下所示。这会将 ListView 向下滚动正确的数量,起始 ListView firstVisiblePosition 为 0。下次调用该方法时,第一个可见位置仍为 0。
但是,如果我手动稍微向下滚动 ListView 然后按下,它会正确向下滚动,然后同样的事情,它不会再向下滚动,因为 firstVisiblePostion 不会改变,除非我先滚动以更新位置。
// Scroll up
@Override
public void onNavigationUpPressed()
{
Log.i("MAKE UP, FIRST VISIBLE POSITION: ", String.valueOf(listView.getFirstVisiblePosition()));
listView.setSelectionFromTop(listView.getFirstVisiblePosition(), fragmentHeight);
}
// Scroll down
@Override
public void onNavigationDownPressed()
{
Log.i("MAKE DOWN, FIRST VISIBLE POSITION: ", String.valueOf(listView.getFirstVisiblePosition()));
listView.setSelectionFromTop(listView.getFirstVisiblePosition(), -fragmentHeight);
}
有任何想法吗?
干杯