1

スクロール ビュー内にフラグメントがあります。

フラグメントが読み込まれると、スクロール ビューがフラグメントまでスクロールします。

フラグメントをスクロールビューにロードしたいのですが、スクロールビューがロードされたときに、現在の位置(上)からフラグメントまでスクロールしたくありません。

これは私がフラグメントをロードする方法です:

  android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();

  FragmentTransaction ft = fm.beginTransaction();

  ft.add(bikeFragContainer.getId(),bikeFrag);
  ft.show(bikeFrag);
  ft.commit();

  setBikeFragData();  

スクロールの理由はft.commit()、フラグメントをロードし、画面を移動してフラグメントを表示するためです。

スクロールビューにロードされるときに、スクロールビューをフラグメントに移動せずに、フラグメントをスクロールビューにロードする方法はありますか?

答えは、フラグメントをロードするだけでトランジションを行わない、FragmentManagerまたはする方法を見つけることにあると思います。FragmentTransaction何か提案はありますか??

4

2 に答える 2

0

が原因である可能性がありandroid:textIsSelectableます。に以下を追加してみてくださいScrollView:

android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"
于 2015-05-21T04:56:14.607 に答える
0

あなたの助けにもかかわらず、私は私の問題に対する明確な解決策を見つけることができませんでした.

その理由は、私のアプローチが正しくない可能性があり (スクロールビューにフラグメントを含めて、スクロールしないことを期待する)、より良いアプローチがある可能性があるためです。

私がしたことは、フラグメントがロードされた直後に、スクロールビューを強制的に一番上までスクロールするという問題を修正することでした。そのため、ユーザーは、スクロール ビューが非常に高速に上下にスクロールするのを確認します (不器用なのはわかっています)。

これが私のコードです:

 android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();

        FragmentTransaction ft = fm.beginTransaction();

        ft.add(mGridContainer.getId(),bikeFrag);
        ft.commit();
        setBikeFrag();


        scrollView.postDelayed(new Runnable() {
            @Override
            public void run() {
                scrollView.smoothScrollTo(0, 0);   // scrolls to top of scrollview  
            }
        }, 1000);

フラグメント トランザクションが発生してから 1 秒待ってから、一番上までスクロールします。

この遅延を減らすことができるかもしれませんが、念のため 1 秒にとどめました。

scrollView 私のレイアウトでは、ScrollView ウィジェットのオブジェクトです。

このスクロール ビュー内に、フラグメントと他のウィジェットが配置されています。

于 2015-05-26T18:22:29.580 に答える