【发布时间】:2009-12-22 05:25:44
【问题描述】:
我需要在 iPhone 中创建一个类似于 UITabBar 的控件,该控件将出现在我的应用程序的每个活动中。 UITabBar 本质上是一个按钮电池,表现出类似TAB的行为:每个按钮都映射到一个活动。
对此我有两种解决方案:
在每个活动的布局 XML 中,我插入一个
<LinearLayout><Button/><Button/><Button/></LinearLayout>元素。然后有一个通用的监听器类来处理按钮的点击。所以,每个活动都会有一个这个监听器的实例。要创建一个扩展 LinearLayout 类的自定义 Widget,请将所有按钮作为其静态成员,并让它处理按钮点击。在每个屏幕中都包含此自定义控件。
我不确定要遵循哪种方法。请指教。替代品也很受欢迎
以下是我对上述方法的看法:
第一种方法的问题:
会生成很多样板代码(findViewByIds、setOnClickListener等)
假设有 5 个活动和 3 个选项卡按钮,则在运行时创建的 Button 对象总数将为 5 x 3 = 15
我想采用第二种方法,因为:
所有代码(状态和行为)都将被小部件类封装。更少的样板代码。
由于按钮将是静态成员,因此在运行时创建的 Button 对象的总数将只有三个。不过,静态成员将在内存中保留更长的时间(直到 JVM 卸载该类),因为控件存在于每个屏幕上,我认为这是可以原谅的。
谢谢。
【问题讨论】:
标签: android android-custom-view android-button