2011-02-17 78 views
8

我正在寻求学习如何在Android中正确布局组件。我是一位经验丰富的CSS/MXML开发人员,并且最难掌握Android组件的布局属性。Android布局属性的高级解释?

一两件事是我不知道它们之间的区别:

,你应该使用一个比其他

  • layout_margin与填充
  • layout_gravity与重力与ignoreGravity线性,表格或相对布局?我想学习的一个例子是在布局上有一个整体边距,其中有与屏幕的顶部/中间/底部相关的单独组件。 sdk文档是一个好的开始,但他们并没有说明在不同情况下工作的方式。

    有关如何学习更复杂/更全面的布局设计的技巧?

回答

10

任何带有前缀layout_的属性都是LayoutParams属性。虽然大多数视图属性在视图构建过程中被视图本身解析,但是LayoutParams是父视图的特殊参数,它提供了关于父级如何确定子视图的大小和位置的提示。哪些LayoutParams在视图上有效完全取决于父视图的类型。

layout_margin因此是对支持边距的父视图的指令。它说,“在我和其他观点或父母的边缘之间放置这么多空间。”填充是视图边缘及其内容之间的视图内的空间。

layout_gravity是其父母中的单个孩子的引力。 gravity会影响其显示的视图的内容。

您使用哪一个取决于您想要达到的结果。如果你想要一个布局在其边缘和它的所有内容之间有一个固定的空间量,你需要填充。如果您想将布局的边缘移动一定距离,则需要边距。如果您的布局没有设置背景,这两个可以在视觉上相同。当你开始创建复杂的用户界面时,布局具有9个可以在视觉上对内容进行分组的内容,这些差异就会变得明显。

-1

enter image description here

我希望你能看到的填充和利润率之间的差异。填充是在内部空间而边距在空间之外。