以编程方式创建场景(带有一个TextView的ViewGroup)

时间:2014-07-28 16:34:44

标签: android android-layout android-view android-transitions

我通常更喜欢使用类而不是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是根。

enter image description here

为了以编程方式实现目标,我们可以使用Scene(ViewGroup sceneRoot, ViewGroup layout)构造函数而不是Scene.getSceneForLayout(..)

我的问题是ViewGroup layout参数。由于我想只有一个textview,如果我创建一个FrameLayout并添加textview ,这将创建一个额外的视图,如上面的截图,这是不一样的。

我要么需要<merge/>之类的东西,要么是编程式的,要么是&#34;转换&#34;将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);

btw产生了什么:

enter image description here

不确定是否值得喧嚣,但我想弄明白。

0 个答案:

没有答案