GridView
はの中にScrollView
とCardViews
の中にScrollView
のラップされたものがあります。 GridViews
はスクロール可能ですが、GridView
の高さをコンテンツの高さに拡大しました。これは、GridView
内の要素とその上の要素を両方ともスクロールしたいからです。私はこれが正しい方法をGridView
使用していないことをよく知っていますが、私はこれを無視するように私自身の理由があります。ScrollViewを使用してフラグメントに戻ったときのAndroid共有要素の遷移
とにかく問題が共有要素(CardView
)遷移ボタンを背面押しまたはIセットfragmentManager.popBackStack();
と断片化するために、フラグメントBから戻ってくるときに、フラグメントBに断片Aからつもりはなく、上に良好に作用するということですの値がCardViews
の値であり、Gridview
に使用されているCardView
のそれぞれの固有の値をプログラムで使用し、CardView
のonClick
メソッドにバンドル引数を指定してフラグメントBに渡します。次に、フラグメントBのonCreateView
メソッドでは、同じ値をCardView
内部に設定します。
ここで私は断片Bに切り替えるためにそれを使用するコードです:
Fragment fragment = new FragmentB()
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
// Defines enter transition only for shared element
Transition changeBoundsTransition = TransitionInflater.from(mContext).inflateTransition(android.R.transition.move);
fragment.setSharedElementEnterTransition(changeBoundsTransition);
bundle.putString("transitionName", "card" + p.getId());
fragment.setArguments(bundle);
fragmentManager.beginTransaction()
.replace(R.id.main_container_wrapper, fragment)
.addToBackStack("package_root")
.addSharedElement(cv, "card" + p.getId())
.commit();
}
そしてここFragmentBのonCreateView
方法だ:私は共有要素の遷移が起こっにうまく機能の上に述べたよう
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
String transitionName = getArguments().getString("transitionName");
view.findViewById(R.id.cv_selected_package_card).setTransitionName(transitionName);
}
は、 FragmentB
に返信しますが、返信時には返信しません。
FragmentA
がFragmentB
から戻ってくるとリロードされ、それを離れるときと戻ってくるときのスクロールの状態が同じままで上から表示される理由が考えられます。しかし、ここではスクロールを主な問題にすることはできません。なぜなら、最初にスクロールせずにCardView
を選択しても、シェア要素の移行は戻ってきても機能しないからです。
ターゲットAPIのバージョンはAPIのバージョンを構築、25であることは25であり、私は、仮想デバイスのAndroid APIレベル25
私はこの問題を解決することができますどのように任意のアイデアでアプリをテストします。
は、多分あなたは 'onBackPressed'をオーバーライド検討すべきです。 –
@MehranZamaniとそれに何をしますか? 私は 'fragmentManager.popBackStack();'を呼び出すことでテストを行ったが、別のものを作っていなかった。 – Mehrdad
あなたは何をしようとしているのか分かりません。おそらく 'notifyDataSetChanged'によって強制的に再描画の断片を作ります。 –