6

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

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

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

4

3 回答 3

6

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

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

不要听别人告诉你不要那样做。如果那是您想要的 UI,请不要受制于您工作的环境。正如您的回复告诉您这不是“在 Android 中执行此操作的正确方法”,您目前也有两个赞成票。

于 2010-05-28T14:27:10.420 回答
0

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

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

现在,我不确定这个类是否需要在每个活动中实例化,Activity或者您是否可以将其方法用作静态方法,但这样的事情应该可以工作,而且它仍然比向每个活动添加侦听器要好。


在我看来(我强调这只是我的观点),你所说的这种界面范式是复制 iPhone 的糟糕尝试。这种范式在 iPhone 上非常流行,主要是因为它只有一个按钮。我什至讨厌 Engadget 应用程序这样做(同样,它是从 iPhone 应用程序复制而来的)——它浪费了屏幕空间。

简而言之,我的建议是: 使用MENU按钮


最后一点:从来没有玩过 a TabLayout,但如果你想Activity在每个选项卡中单独使用,那么我 99.9% 肯定你不能这样做(你不能将整个活动嵌入到任何类型的Viewor中ViewGroup)。唯一的TabLayout房子是孩子Layout,而不是活动。此外,使用,您可以与BACKTabLayout按钮说再见(您会浪费另一个按钮从 iPhone 复制 UI 吗?)——除非您打算覆盖它,在这种情况下您可以说再见你的用户。

于 2010-05-28T13:00:03.563 回答
0

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

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

于 2010-05-28T13:06:19.353 回答