我有一个带有按钮的导航栏,我想在多个活动之间共享:
目前,当我开始相同的活动(例如,单击 LOST.DIR)时,整个屏幕都会发生变化,包括导航栏(出现新的文件夹列表)。
我想保持导航栏静态(在相同的活动类型之间保持不变,并且在开始新活动后不改变或重新出现)。
这可能吗?
我有一个带有按钮的导航栏,我想在多个活动之间共享:
目前,当我开始相同的活动(例如,单击 LOST.DIR)时,整个屏幕都会发生变化,包括导航栏(出现新的文件夹列表)。
我想保持导航栏静态(在相同的活动类型之间保持不变,并且在开始新活动后不改变或重新出现)。
这可能吗?
听起来您想使用一个活动和片段。
但是,如果你真的必须使用多个活动。另一种方法是使用操作栏(actionbarsherlock对此非常有用)并在不同活动之间切换菜单。下拉菜单可以是操作栏上的图标列表,也可以是位于操作栏右上角的下拉微调器。此操作栏在您的活动中将是静态的,并且包含相同的类别列表(即您的导航栏的类别)。
不是马上。活动与您想要的完全相反:它们是独立的界面片段。
您可以使用Fragments
或将您的活动嵌入到主活动中。TabHost
例如,这样做。
完全控制的一种方法是编写您自己的自定义类,该类将 LinearLayout 作为构造函数参数并处理每个按钮的可见性、单击调度(通过委托)、图像等。
添加方法来完成上述所有操作以及您需要的任何其他功能。
在每个 Activity 布局中创建一个 layout.xml 和它。
在每个 Activity 中实例化您的按钮栏类,并将对您在内容视图上使用 findViewById 获得的布局的引用传递给它。
正如其他人所说,有现有的解决方案,您可能会问“为什么要发明一个新轮子”。我在我的许多项目中都使用了这样一个类,并且做第一个版本需要做很多工作,但现在我有一个可以完全控制、添加、修复和自定义的类。
像这样的东西:
bar.setButtonClickHandler(Button.Favourites, favouritesButtonClickHandler);
bar.setButtonVisibility(Button.Edit, View.INVISIBLE);
ETC
我使用了 LinearLayout,但如果我需要使用其他东西,那么重载构造函数以接受(例如,RelativeLayout 参数)是一件简单的事情。