したがって、ListView と上下のボタンがあります。
私の目標は、ボタンの1つを押すたびにListViewを高さだけスクロールすることです。単純な上下のナビゲーションです。
スクロールは機能します。押し下げると、スクロールするたびに ListView が正しい距離だけスクロールします。
ただし、上ボタンのみが意図したとおりに機能します。下ボタンには、 ListView の最初に表示されているスクロール位置が更新されていないことが原因であると思われる問題があります。
下に押すと、以下に示すように onNavigationDownPressed() メソッドが発生します。これにより、ListView の firstVisiblePosition が 0 で開始され、ListView が正しい量だけ下にスクロールされます。次にそのメソッドが呼び出されたとき、最初に表示される位置は 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);
}
何か案は?
乾杯