1

是否可以从屏幕上删除视图?安卓

例如我有一些布局,其中包含 3 个布局;

layout_1 layout_2 layout_3

是否可以单击 layout_1,并将其从屏幕上移开,您将收到可见的

layout_2 layout_3

提前致谢。

upd:问题是,我需要顺利滑出这个视图。看起来像 Facebook 中的侧边栏。但另一件事是,删除 layout_1 后的其他两个布局应该被拉伸以适应父布局。

4

4 回答 4

5

给视图设置一个id。

然后做

(LinearLayout) linLayout = (LinearLayout) findViewById(R.id.layout_1);
linLayout.setVisibility(View.GONE);

(将其转换为任何类型。)

或者直接使用:

findViewById(R.id.layout_1).setVisibility(View.GONE);

编辑:根据您的新信息和我评论的问题/答案:

(LinearLayout) linLayout = (LinearLayout) findViewById(R.id.layout_1);
Animation animation = new TranslateAnimation(0, 500,0, 0); //May need to check the direction you want.
animation.setDuration(1000);
animation.setFillAfter(true);
linLayout.startAnimation(animation);
linLayout.setVisibility(View.GONE);

如果您希望其他两个也逐渐占用空间,您可能需要更高级的东西。

于 2012-11-22T19:33:41.273 回答
1

是的,只需使用removeView().

于 2012-11-22T19:33:19.513 回答
0

我假设您想要完全改变页面的视图和功能。在这种情况下,您应该要么开始一个新活动,要么查看片段和片段管理器。

编辑

好的,如果您将不同的视图作为 3 个不同的片段,您可以使用片段管理器来膨胀和删除它们,就像这样

FragmentTransaction ft_main = getFragmentManager().beginTransaction();
//note the following line sets the fragment Tag to "layout_1_fragment" you can
//use this to retrive and dismiss it later
ft_main.replace(R.id.WhateverViewYoureInflatingInto, new Layout_1_Fragment(), "layout_1_fragment");
ft_main.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft_main.commit();

要删除片段,请执行以下操作:

FragmentTransaction ft_main = getFragmentManager().beginTransaction();
ft_main.remove(getFragmentManager().findFragmentByTag("layout_1_fragment"));
ft_main.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft_main.commit();

使用此代码,您可以从屏幕上动态膨胀和删除片段。

注意:当你删除它时,片段并没有被破坏,所以如果你想重新附加片段,我建议检查一下

getFragmentManager().findFragmentByTag("layout_1_fragment") == null

如果不重用现有的片段

于 2012-11-22T19:33:07.950 回答
0

使用OnClickListenerView.setVisibility(int)

于 2012-11-22T19:33:25.373 回答