我应该将所有Android视图属性放入样式中吗?

时间:2010-11-30 21:48:12

标签: android

我已经看到一些Android开发者推广这种形式的声明性布局:

<TextView style="@style/my_textview_style" />

即。几乎所有的属性(包括ID)都进入了样式定义。它肯定会缩短布局文件,但这是一个太过分了吗?

你会在样式定义中看到什么,以及在布局中应该保留什么,以及为什么?

我今年开始做Android开发,但有先前的开发经验。像这样的问题非常重要,我们使用工具,习惯的“方式”更有效率。感谢您分享您对什么对您有用的信息,清晰度,效率,可维护性以及应用可靠性。

2 个答案:

答案 0 :(得分:3)

我一直在思考这个问题,在处理多种设备尺寸和密度时它变得更加贴切。

在样式中放入太多信息会限制其使用,尤其是在处理横向和纵向布局时。例如,景观布局实际上可能在构图上完全不同,但需要非常相似的样式。

在这些情况下,它有助于使用。例如,用于表达风格差异的符号。

<MyPage>
<MyPage.portrait>
<MyPage.landscape>

有关上述创建样式方法的信息,请参阅下文。 http://developer.android.com/guide/topics/ui/themes.html

MyPage定义了布局的常用属性,然后在纵向和横向扩展中覆盖这些值。

我......在风景中你可能有比画像更多的左右填充。

我发现的问题是xml文件的主题和样式变得非常庞大,特别是如果像我一样你有很多活动,如果你解决了很多创意变化,那么你最终可能会遇到很多混乱的定义。 / p>

此时你必须盘点,整理并重新考虑因素。

我唯一的建议是你提前做好计划。定义一个适合您项目的命名系统,将其写下来并坚持下去。

可能的样式命名约定

<section>_<componentName>_<componentType>_<orientation>

home_leftPanel_btn_horizontal
home_leftPanel_listview
home_leftPanel_listview_horizontal

应采用类似的主题方法。

我还在努力解决这个问题,所以不能举出更全面的例子。

答案 1 :(得分:1)

如果您计划以不同方式为应用程序设置外观,那么将这些内容推送到样式中是一种很好的做法。如果您计划发布两个版本只有不同的外观,那么一定要将它们推入一个样式。正如你所说,它可以清理你的布局文件。

您应该将ID推送到样式中吗?不,因为ID是您的代码将抓取对这些对象的引用的钩子。总是让你的程序外化ID我看不出太多意思。所以我说这种做法太过分了。

现在你应该每次都这样做吗?嗯,我认为这真的取决于你是否认为你需要重新给应用程序带来的好处。有些人不能拒绝一个好主意,并且总是尽力做好每一个好主意。虽然这令人钦佩,但效率不高。经验是知道您需要什么样的好主意,以及您现在正在开发的这个应用程序有什么好主意。为了保持自己的工作效率,我们只需要能让我们加快行动的好主意,而其他所有想法都只是艺术。我该如何选择?重构,重构,重构。快速完成,然后重构以根据我正在进行的下一个要求进行清理。做得快,然后重构。重复,直到我的老板微笑。