我需要为显示字母表这样的简单任务创建大约26个按钮。我可以通过使用布局设计来做到这一点。
如果我在运行时创建此按钮,它会提供更多性能(考虑内存,速度,apk大小!)?
重要要求:
编辑:此布局类似于其他四个活动的弹出窗口。用户可以按此布局中的任何字母表。一旦字母表被选中,布局将被关闭
答案 0 :(得分:2)
由于资源中的所有内容都是静态的,因此可以将所有内容都放在xml文件中。
仍然可以说,解析项目xml layout files
的'概念'会给创建视图的过程带来开销。
我会选择在xml中定义的 精心设计的布局 。
答案 1 :(得分:1)
强烈建议使用XML布局以获得最佳实践和更易理解的代码。此外,如果您担心大视图的性能,请使用相对布局,这些布局比其他类型的布局(如LinearLayouts)更快。
显示XML是最佳做法: http://developer.android.com/guide/topics/ui/declaring-layout.html
同样为了提高性能,将Buttons保持为Activity成员变量,然后只需要从资源加载一次。
希望有所帮助, 马克
答案 2 :(得分:1)
让人惊讶。虽然XML是最佳实践答案,但任何中的26个会为某些动态运行时创建或至少两者的组合而尖叫。你不会在处理时间或apk大小方面看到太多差异 - 它将归结为代码维护。
例如,考虑当您想要为每个字母按钮更改或添加新属性(例如填充)时会发生什么。您是否希望手动更改所有这些XML元素,或者考虑使用聪明的正则表达式来正确查找/替换?
我会使用样式组合,<include>
语句和运行时修改来获得全面,可维护的解决方案。首先创建一个按钮,用于表示您希望所有按钮的外观。将“LetterButton”样式解压缩到style.xml,然后使用按钮上的android:style="@style/LetterButton"
属性。这将允许您在单个文件中更改样式,并使其影响所有字母按钮。
接下来,将按钮本身解压缩到<include>
文件中。您可以通过右键单击按钮的GUI版本并选择“Extract include ...”来完成此操作。然后根据需要安排<include>
- 按钮,也许在<TableLayout>
中。请确保为每个人提供唯一ID,例如@+id/letter_button_0
到_25
。所有这些按钮的text
属性可以是任何内容,您可以稍后动态设置它们。
最后,在你的onCreate中,定义一个形式为{R.id.letter_button_0,...}的整数数组,以及一个形式为{“A”,...}的字符串数组,并迭代那些,做一个button = findbyId(int),button.setText(String)在每个按钮上放一个字母。
这可能看起来更像是这样,但你正在做所有繁重的工作来创建一个智能用户界面,所以你可以在一个地方(样式或包含)更改代码,所有按钮将是更新。
答案 3 :(得分:0)
您应该在xml文件中创建它,并根据需要使其可见和不可见。
答案 4 :(得分:0)
您可以创建一个包含静态资源的布局。有动态文字内容&amp;对于动态backgrounds.you可以使用off&amp;的按钮属性。可见其中。