Android动画标签内容切换

时间:2011-03-03 18:11:05

标签: android animation

当我使用ViewFlipper单击我的Android应用程序中的选项卡时,我正在尝试动画视图更改,但问题是使用setContent添加到TabSpec的视图无法再添加到ViewFlipper或抛出此异常:< / p>

03-03 19:12:19.082: ERROR/AndroidRuntime(229): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

我如何添加标签

private ArrayList<View> tabViews = new ArrayList<View>();
private ViewFlipper flipper;
....
View tabView = contentFactory.createTabContent("tab_" + labelId);
tabViews.add(tabView);

mTabHost.getTabContentView().addView(tabView);

spec.setIndicator(tabIndicator);
spec.setContent(tabView.getId());
mTabHost.addTab(spec)

以后

for (View tabView : tabViews) {
    flipper.addView(tabView);
}

只有当您点击标签时,我才会瞄准像http://www.youtube.com/watch?v=SZTiJmclaRc这样的效果。我打算使用onTabChanged事件来提交文件

ViewFlipper.setDisplayChild(flipperViewIndexDerivedFromTabIndex)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

没有任何丑陋的ArrayList黑客就可以使用它。关键是将我的布局xml中tabcontent的View类型从FrameLayout更改为ViewFlipper。

我现在可以将标签内容作为TabContentFactory对象传递给

spec.setContent(contentFactory);

并通过

访问onTabChanged方法中的ViewFlipper
ViewFlipper flipper = (ViewFlipper) getTabHost().getTabContentView();

之后,它只是实现逻辑来选择要翻转的视图。启示录来自浏览SO上的其他Android标记问题!