私は通常、XML ではなくクラスで作業することを好みます。
これは、シーンを作成する通常の方法です。
TransitionInflater inflater = TransitionInflater.from(this);
ViewGroup mSceneRoot = (ViewGroup) findViewById(R.id.sceneRoot);
Scene mScene2 = Scene.getSceneForLayout(mSceneRoot, R.layout.transition_event,this);
TransitionManager mTransitionManager = inflater.inflateTransitionManager(R.anim.transitions_mgr, mSceneRoot);
mTransitionManager.transitionTo(mScene2);
かなりきれい。R.layout.transition_event
は TextView のみであるため、次のレイアウトが作成されます。LinearLayout がルートです。
プログラムで物事を実現するために、 のScene(ViewGroup sceneRoot, ViewGroup layout)
代わりにコンストラクターを使用できますScene.getSceneForLayout(..)
。
私の問題はViewGroup layout
パラメータです。テキストビューを 1 つだけにしたいので、FrameLayout を作成してテキストビューを追加すると、上記のスクリーンショットと同じではない追加のビューが作成されます。
私は何かが必要です<merge/>
が、プログラムで、または TextView を ViewGroup に「変換」します。
これまでの私の最善の試みは次のとおりです。
# I try to do the equivalent of .getSceneForLayout() here
ViewGroup vg = new ViewGroup(MainActivity.this) {
@Override
protected void onLayout(boolean b, int i, int i2, int i3, int i4) {
}
};
TextView tv = new TextView(MainActivity.this);
tv.setText("YOLO!");
vg.addView(tv,0);
mScene2 = new Scene(mSceneRoot, vg);
どちらが生産しますか:
ハッスルする価値があるかどうかはわかりませんが、これを理解したいと思います。