1

私はGridView10行と10列を持っています.アクティビティがGridView最後の位置へのスクロールを開始すると、最後の行からアイテムを選択した後、最後の行からアイテムを選択できます..など.しかし、私はそうではsmoothscrollToPositionありません動作しています(時々バウンスするだけです)だから私はこれをしましgridView.smoothScrollBy(-63,1000)たが、このスクロールはすべての電話で均一な位置を持っていないため、良い結果が得られません。

4

1 に答える 1

0

gv.smoothScrollBy ()を使用する代わりに、 gv.smoothScrollTo()を使用して、表示したい特定の位置を指定してください。これは、scrollBy が特定の位置を指すのではなく、その数のピクセルだけスクロールするためです。

また、指定した値が画面の境界内にない場合、奇妙な結果が表示され始めます。通常、画面サイズが異なる別のデバイスを試していて、言及したピクセルが表示されていない場合に発生します範囲。そのためには、次を使用してみてください。

private int getVisibleArea()
{
    int measureValue = 0;
    switch (getResources().getDisplayMetrics().densityDpi) {
    case DisplayMetrics.DENSITY_MEDIUM:
        measureValue =(screenHeight);
        break;
    case DisplayMetrics.DENSITY_HIGH:
        measureValue = (screenHeight);
        break;
    case DisplayMetrics.DENSITY_XHIGH:
        measureValue = (screenHeight);
        break;
    }
    return measureValue;
}

screenHeight は次のとおりです。

Display display = getWindowManager().getDefaultDisplay();
            screenHeight = display.getHeight();
于 2013-05-20T06:07:29.483 に答える