请注意,我指的是Android 2.2和2.3,这是大多数用户使用的版本。
我在编写每个应用程序的片段和活动时都使用XML布局。 我很少看到需要动态创建视图,但需要在代码中进行ListView的配置,显示/隐藏视图等操作。 对我来说,XML的优点是:
我想不出任何将所有布局放入代码中的好理由-这听起来很糟糕。
我认为您的布局看起来不同的原因是因为您的XML未正确定义布局。请记住,Android工具会将XML布局转换为代码,因此使用XML布局与使用动态布局没有固有的问题-两者最终都变成代码。
OckhamsRazor,
答案非常依赖于你的需求、灵活性和知识水平。首先要了解的是,每个布局,无论是通过XML还是编程方式创建的,都可以通过属性进行特定调整或使其符合多个屏幕。
... 并且总是不得不使用Java代码来构建布局。在专业的开发环境中,这样做是否可行呢?
是的,Android提供了这些功能,可以让您这样做。然而,通过XML管理布局的好处包括标准的MVC分离、更简单的调试以及如果需要更容易修改资源。此外,您可以根据设备配置轻松维护多个布局副本。
... 是否有人能够纯粹地使用XML文件开发具有复杂视图的应用程序?
当然可以!有一些令人惊奇的程序完全利用了XML而不是编程视图。关键是需要从父View获取多少信息(即非标准视图属性)。即使在这些情况下,也有方法传递该信息,只要您知道在哪里以及如何做到这一点。
我有做错什么吗?
我不认为如此。老实说,我根据需要都运行这两种方式。应该真正取决于你对奇特之处的了解程度。以下是一个例子:有时我不知道所有元素需要多大,直到在设备上运行时;有时我会让设备符合我的布局需求。最终,我使用以下表格来做出决定。
如果其中三个问题的答案中有两个是“是”,我将使用一定程度的编程布局。否则,我将使用纯XML。话虽如此,编程是那些鼓励独创性(只要安全)并且任何事情都可以用任意数量的方式完成的职业之一。最终,我会说做任何让你更轻松地制作高质量应用程序的工作。
谷歌基于自己对软件程序员和他们的一般实践的了解进行建议。他们还创建了这个平台,所以他们知道哪些东西以哪种方式进行了优化。这完全是关于经验,我们每个人都有自己的经验。如果您在利用XML方面遇到困难,花时间弄清楚一下怪癖肯定是值得的,因为它是另一个工具。此外,这将为您提供自己回答这个问题所需的信息。
总而言之:我可能会说巧克力更好,但如果你喜欢香草味,你会不同意的。请注意每种方法的缺点和优点,并花时间学习如何使用这两种方法完成相同的任务。这将使您成为更好的程序员,并给您更好的使用哪种技术的感觉。
希望这可以帮到你,
FuzzicalLogic
我通常会处理高度可定制的用户界面(UI),其中很大一部分需要用代码完成。但是,在任何可能的情况下,我都会尝试使用布局片段并将其填充,以便添加、删除或重新排列UI部分时,我仍然只需完成部分布局,而不是全部。
话虽如此,通过代码进行布局并不难。它的最大优势在于编译时检查。我可以比使用预览窗格更快地发现问题。预览窗格对于初始布局可能很好,但我使用层次结构查看器来找出我的布局为什么看起来不对。
将布局分离并放入xml文件中会更好。我偶尔需要在代码中调整布局,但这总是一个例外,只有当我确定无法在布局.xml中完成时才会这样做。如果正确使用布局视图,则应用程序在所有设备上看起来非常相似。