Android全局菜单架构建议

时间:2012-09-25 22:11:04

标签: android android-layout

我们已经为我们的应用程序实现了类似Facebook的样式菜单,它基本上允许您单击按钮并在侧面滑动视图以访问隐藏在顶层视图后面的菜单。

目前,我们将所有视图(此应用程序都有很多屏幕)放在单独的XML文件中,就像任何典型的Android应用程序一样。我应该注意到我们大量使用碎片。

目标是以这样一种方式抽象代码,而不是将我们的活动和片段膨胀到顶级视图,而是现在我们将它扩展到这个顶级父级的子级中,这将成为其中的一部分我们所有的活动(我们所有的活动都是自定义活动的子类)。

menu.xml的工作方式是使用一个外部FrameLayout来托管一个空的嵌套子FrameLayout。

我们试图避免做的是将这个外部菜单代码包装在我们的每个视图XML中,尽管这肯定有用。

我正在尝试找到一种编程方式,将菜单代码与空的嵌套FrameLayout放在一个文件中。然后,当我们开始夸大Fragment或Activity的XML时,就像这样:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);

而不是这样做,我们将它膨胀到嵌套的子FrameLayout中。我正在尝试这样的事情:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);
    ((FrameLayout) getActivity().findViewById(R.id.child)).addView(listView);

目前导致:“无法恢复活动。找不到ID为0x7f090019的片段MyFragment [id = 0x7f090019]”

感谢任何输入。谢谢!

1 个答案:

答案 0 :(得分:0)

我为类似的样式菜单所做的是添加一个框架布局并将一个片段膨胀到其中。然后我使用translateAnimation和layoutApp将屏幕转换到正确的位置。我将所有这些代码保存在一个slidingDrawerActivity中,它很好地分割了代码,以便我可以调用SlideOutMenu来使用它

希望这有帮助 - 如果你想要更多的deets,请告诉我

编辑:

使用支持库

替换帧布局的代码
FragmentTransaction FT=getFragmentManager().beginTransaction();
FT.replace(R.id.yourFrameLayout, new YourFragment(), yourFragmentTag);
FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
FT.commit();