0

我有一个带有按钮的导航栏,我想在多个活动之间共享:

在此处输入图像描述

目前,当我开始相同的活动(例如,单击 LOST.DIR)时,整个屏幕都会发生变化,包括导航栏(出现新的文件夹列表)。

我想保持导航栏静态(在相同的活动类型之间保持不变,并且在开始新活动后不改变或重新出现)。

这可能吗?

4

3 回答 3

7

听起来您想使用一个活动和片段

但是,如果你真的必须使用多个活动。另一种方法是使用操作栏(actionbarsherlock对此非常有用)并在不同活动之间切换菜单。下拉菜单可以是操作栏上的图标列表,也可以是位于操作栏右上角的下拉微调器。此操作栏在您的活动中将是静态的,并且包含相同的类别列表(即您的导航栏的类别)。

于 2013-02-07T19:21:30.223 回答
1

不是马上。活动与您想要的完全相反:它们是独立的界面片段。

您可以使用Fragments或将您的活动嵌入到主活动中。TabHost例如,这样做。

于 2013-02-07T19:21:05.333 回答
0

完全控制的一种方法是编写您自己的自定义类,该类将 LinearLayout 作为构造函数参数并处理每个按钮的可见性、单击调度(通过委托)、图像等。

添加方法来完成上述所有操作以及您需要的任何其他功能。

在每个 Activity 布局中创建一个 layout.xml 和它。

在每个 Activity 中实例化您的按钮栏类,并将对您在内容视图上使用 findViewById 获得的布局的引用传递给它。

正如其他人所说,有现有的解决方案,您可能会问“为什么要发明一个新轮子”。我在我的许多项目中都使用了这样一个类,并且做第一个版本需要做很多工作,但现在我有一个可以完全控制、添加、修复和自定义的类。

像这样的东西:

bar.setButtonClickHandler(Button.Favourites, favouritesButtonClickHandler);
bar.setButtonVisibility(Button.Edit, View.INVISIBLE);

ETC

我使用了 LinearLayout,但如果我需要使用其他东西,那么重载构造函数以接受(例如,RelativeLayout 参数)是一件简单的事情。

于 2013-02-07T21:14:21.380 回答