创建自定义控件或内联按钮

时间:2009-12-22 05:25:44

标签: android

我需要在iPhone中创建类似于UITabBar的控件,该控件将存在于我的应用程序的每个活动中。 UITabBar本质上是一组显示TAB行为的按钮:每个按钮都映射到一个活动。我有两个解决方案:
1.在每个活动的布局XML中,我插入一个<LinearLayout><Button/><Button/><Button/></LinearLayout>元素。然后有一个通用的监听器类来处理按钮点击。因此,每个活动都会有一个这个监听器的实例 2.要创建扩展LinearLayout类的自定义Widget,请将所有按钮作为其静态成员,并让它处理按钮单击。在每个屏幕中包含此自定义控件。

我不确定采用哪种方法。请指教。替代方案也赞赏

以下是我对此的看法:
第一种方法的问题:

1.它会产生很多锅炉板代码(findViewByIds,setOnClickListener等) 2.假设有5个活动和3个选项卡按钮,在运行时创建的Button对象总数将为5 x 3 = 15

我想采取第二种方法,因为:
1.所有代码(状态和行为)都将由窗口小部件类封装。减少锅炉代码。
2.由于按钮将是静态成员,因此在运行时创建的Button对象总数将只有三个。虽然,静态成员将在内存中保留更长时间(直到JVM卸载该类),因为控件出现在每个屏幕上,我认为这可以原谅。

感谢。

2 个答案:

答案 0 :(得分:1)

为什么不在Android中使用现有的TabWidget实现?

http://developer.android.com/guide/tutorials/views/hello-tabwidget.html

不仅要实现自己的小部件额外工作,与平台上的其他应用程序相比,它可能会感觉不合适。

特别是,我看到了一些问题:

  1. 当标签栏的外观因系统更新而发生变化时,您必须重新编写代码。您也不太可能完全匹配内置标签栏的外观和感觉。 (在OS X上思考Java。)

  2. 每次用户点击选项卡时,它都会向堆栈添加另一个活动。这不仅浪费内存,而且每次用户点击手机上的后退按钮时,都会转到上一个标签页。这不是标签栏的工作方式。

答案 1 :(得分:0)

不幸的是,我找不到一种方法来自定义内置的TabWidget,使其看起来像UITabBar。所以,我将创建一个自定义控件并将Buttons作为静态成员(采用第二种方法)。控件将按预期处理点击 我注意到获奖的Plink Art应用程序也有一个类似于iPhone UITabBar的标签控件。