2

プロジェクトでhttps://github.com/etsy/AndroidStaggeredGrid/を使用しています。特定の位置/項目に自由にスクロールできないことを除いて、すべて正常に動作します。

これまでに試したこと (考えられるすべてのことを、1 つのコードにまとめて表示します):

final StaggeredGridView gv = (StaggeredGridView) ma.findViewById(R.id.photosList);
gv.setChoiceMode(StaggeredGridView.CHOICE_MODE_SINGLE);
gv.setFocusable(true);
gv.clearFocus();
gv.post( new Runnable() {
    @Override
    public void run() {

        // #1 approach
        gv.requestFocusFromTouch();
        gv.smoothScrollToPosition(index);

        // #2 approach
        gv.setSelection(index);

        View v = gv.getChildAt(index);
        if (v != null) {
            // #3 approach
            v.requestFocus();
        }
        //v.requestFocusFromTouch();
        Utils.log("scroll to " + index);
        gv.requestLayout();
    }
});

何も機能していないようで、このビューには私の問題に関連する何らかのバグがあると思い始めています。この件で私を助けてくれる人はいますか?

4

1 に答える 1

1

特定の場所までスクロールできないことがわかりましたが、グリッドビューの状態を復元できることがわかりました。私のアプリケーションでは、カスタム バック スタック メカニズムを実装する必要があり、取得できる状態を渡すことができます。

Parcelable state = mgridView.onSaveInstanceState();

状態は Parcelable であるため、Parcelable をインテントに入れ、必要に応じて取得して状態を復元することができました。

if(state != null) {
    mgridView.onRestoreInstanceState(state);
}

状態を復元すると、グリッド内の以前の位置が正確に復元されます。

これが、この問題に直面している他の誰かに役立つことを願っています!

于 2015-05-21T01:56:45.063 に答える