在Android中重用页脚菜单的最佳方法

时间:2010-05-28 12:33:59

标签: android menu footer

我正在尝试在应用的页脚中实现一个菜单,类似于Engadget应用。据我所知,让标准的TabLayout以这种方式工作并非易事(如果可能的话)?

正如我看到很多使用这种界面范例的应用程序,我认为有一种聪明的方法可以做到这一点。目前,我通过在每个布局的末尾添加包含行来定义布局。就渲染而言,这工作正常,但我必须将onClickListeners添加到每个活动。我们可以通过XML定义clickListener吗?

总结我的问题:在多个活动中实现共享页脚导航的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

您可以将所有活动派生自一个扩展Activity的公共基类,并在其中放置一个方法来构建菜单。使用RelativeLayout作为主容器,在底部粘贴一个水平LinearLayout(layout_alignParentBottom =“true”),然后将主“content”容器(您想要特定活动的任何类型的布局)对齐在其上方。使用android:weight来放置菜单中的任何内容(例如ImageButton),然后在菜单的容器上使用android:weightSum,它们将均匀分布。所以,如果你有4个带有android:weight =“1”的ImageButton,并且包含它们的LinearLayout都有android:weightSum =“4”你应该是好的。

因此,TabContentActivity可以扩展Activity,然后您的所有特定活动都会扩展TabContentActivity。 TabContentActivity有一个调用super.onCreate的onCreate,然后调用一些私有方法来构建菜单。然后,当你的派生类在他们自己的onCreate中调用super.onCreate时,就构建了你的“标签”。您可以在TabContentActivity中使用Enum表示每个选项卡,并使用该Enum类型的局部变量来指示突出显示哪个选项卡。

不要听别人告诉你不要这样做。如果这是您想要的UI,请不要受到您正在使用的环境的限制。就像您有回复告诉您这不是“在Android中执行此操作的正确方法”一样,您目前还有两张投票。

答案 1 :(得分:0)

这是一个很长的镜头,我从未尝试过它,看它是否有效:

  • 创建一个特殊的类,其中包含页脚中元素的onClick方法。每个import中都有Activity个班级;
  • 在包含的XML文件中使用android:onClick,其值指向该类中的方法。

现在,我不确定这个类是否需要在每个Activity中实例化,或者如果你可以将它的方法用作静态,但是这样的东西应该可行,并且它仍然比添加监听器更好每一项活动。


在我看来(我强调这只是我的意见),你所谓的这种界面范式是一种很难复制iPhone的尝试。这种模式在iPhone上很受欢迎,主要是因为它只有一个按钮。我甚至讨厌使用Engadget应用程序(再次,它是从iPhone应用程序复制的) - 它浪费了屏幕空间。

简而言之,我的建议是: use the MENU button


最后一点:永远不会使用TabLayout,但如果你想在每个标签中单独Activity,那么我99.9%肯定你不能这样做(你无法嵌入任何类型ViewViewGroup)的整个活动。 TabLayout只包含子Layout,而非活动。此外,使用TabLayout,您可以再见 BACK 按钮(您是否会浪费另一个按钮从iPhone复制用户界面? ) - 除非你打算覆盖它,在这种情况下你可以告别你的用户。

答案 2 :(得分:0)

不确定这个想法是否可行,

在页脚上设置TabLayout1,但是将其设置为只显示选项卡,而不是内容(位于页脚下方,在不可见的空间中)。
然后在屏幕的其余部分有第二个视图,您可以在那里切换视图。如果将第二个布局(顶部)设置为TabLayout2并将选项卡绑定到“活动”,则可以跨活动共享此视图。另请注意,您必须在顶部设置TabLayout2,使得选项卡不可见,只有内容区域可见。我认为可以解决一些填充问题。