2

私は通常、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);

どちらが生産しますか:

ここに画像の説明を入力

ハッスルする価値があるかどうかはわかりませんが、これを理解したいと思います。

4

0 に答える 0