是否可以从屏幕上删除视图?安卓
例如我有一些布局,其中包含 3 个布局;
layout_1 layout_2 layout_3
是否可以单击 layout_1,并将其从屏幕上移开,您将收到可见的
layout_2 layout_3
提前致谢。
upd:问题是,我需要顺利滑出这个视图。看起来像 Facebook 中的侧边栏。但另一件事是,删除 layout_1 后的其他两个布局应该被拉伸以适应父布局。
是否可以从屏幕上删除视图?安卓
例如我有一些布局,其中包含 3 个布局;
layout_1 layout_2 layout_3
是否可以单击 layout_1,并将其从屏幕上移开,您将收到可见的
layout_2 layout_3
提前致谢。
upd:问题是,我需要顺利滑出这个视图。看起来像 Facebook 中的侧边栏。但另一件事是,删除 layout_1 后的其他两个布局应该被拉伸以适应父布局。
给视图设置一个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);
如果您希望其他两个也逐渐占用空间,您可能需要更高级的东西。
是的,只需使用removeView()
.
我假设您想要完全改变页面的视图和功能。在这种情况下,您应该要么开始一个新活动,要么查看片段和片段管理器。
编辑
好的,如果您将不同的视图作为 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
如果不重用现有的片段
使用OnClickListener
和View.setVisibility(int)
。