是否可以从屏幕中删除视图?的Android
例如我有一些布局,其中包含3个布局;
layout_1 layout_2 layout_3
是否可以点击layout_1,然后将其移离屏幕,您将收到可见的
layout_2 layout_3
提前致谢。
upd:问题是,我需要顺利地滑下这个视图。看起来像Facebook的侧边栏。但另一件事是,删除layout_1后的其他两个布局应该被拉伸以适应父布局。
答案 0 :(得分: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);
如果你希望其他2也逐渐占用空间,你可能需要更高级的东西。
答案 1 :(得分:1)
是的,只需使用removeView()
。
答案 2 :(得分: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
如果没有重用现有的片段
答案 3 :(得分:0)
使用OnClickListener
和View.setVisibility(int)
。