2010-05-28 52 views
7

我试图在应用程序的页脚中实现菜单,类似于Engadget应用程序。据我所知,以这种方式获得标准的TabLayout并不是微不足道的(如果可能的话)?在Android中重复使用页脚菜单的最佳方式

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

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

回答

7

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

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

不要听别人告诉你不要这样做。如果这是您想要的用户界面,请不要受到您工作环境的限制。正如您有回应告诉您,这不是“在Android中执行此操作的正确方法”,您当前也有两个投票。

0

这里是一个长镜头,我从来没有尝试过,看看它的工作原理:

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

,我不知道这个类是否需要在每一个Activity被实例化或者您可以使用它的方法是静态的,但这样的事情应该工作,它仍然比增加听众的每一个更好活动。


在我看来(我强调,这只是我的意见),因为你把它这个界面范例是一个贫穷的尝试复制了iPhone。这种范例在iPhone上非常流行,主要是因为它只有一个按钮。我甚至讨厌这样做的Engadget应用程序(再次,它是从iPhone应用程序复制) - 它浪费屏幕的房地产。

总之,我的建议是:use the MENU button


最后要注意:永远不要用TabLayout发挥各地,但如果你想在每个选项卡单独Activity那么我99.9%肯定你不能做到这一点(你不能在任何嵌入整个活动种类ViewViewGroup)。 TabLayout只有小孩Layout s,不是活动。此外,与TabLayout,你可以说再见返回按钮(你要浪费但另一个按钮从iPhone复制一个用户界面?) - 除非你打算覆盖它,在这种情况下,你可以告诉你的用户再见。

+0

错误。 TabLayout可以在每个标签中有单独的活动,并且我在市场上有一个应用程序。 – Rich 2010-05-28 14:30:33

+0

因此,您可以同时在屏幕上进行多个活动活动?是否有某种可以容纳活动儿童的ViewGroup?如果你是对的,那么这应该是要走的路,尽管我仍然认为使用菜单更好,对于屏幕空间,如果不是其他任何东西。 – Felix 2010-05-28 16:42:55

0

不知道这个想法是可行的,

坐落在页脚TabLayout1,但设定,让只有标签是可见的,而不是内容(这将大大页脚下方,在无形的空间) 。
然后在屏幕的其余部分进行第二次查看,然后您可以在该处切换视图。如果您将第二个布局(顶部)设置为TabLayout2并将选项卡绑定到活动,您可以在活动中共享此视图。另外请注意,您必须在顶部设置TabLayout2,以便只有内容区域可见时才能看到选项卡。我认为用一些填充可以解决。

+0

听起来像一个彻头彻尾的黑客。我同意它*可能*工作,但这并不会改变其黑客状态。另外,点击选项卡时启动新的活动似乎......非用户友好的。我会讨厌这样的应用程序。最重要的是,将“TabLayout”定位恰到好处将是一场噩梦,特别是考虑到Android支持的各种屏幕和密度。 – Felix 2010-05-28 14:13:13

+0

单击选项卡时启动新活动已经内置,您可以非常简单地使用它。 – Pentium10 2010-05-28 15:13:27

相关问题