8

我正在寻求学习如何在 Android 中正确布局组件。我是一名经验丰富的 CSS/MXML 开发人员,并且很难全面了解 Android 组件中的布局属性。

一件事是我不确定这些之间的区别:

  • layout_margin 与 padding
  • layout_gravity vs.gravity vs.ignoreGravity

您应该在线性、表格或相对布局中使用其中一个吗?我想学习的一个例子是在布局上有一个整体边距,其中包含与屏幕顶部/中间/底部相关的单独组件。sdk 文档是一个好的开始,但它们没有显示在不同情况下事情是如何工作的。

关于去哪里学习更复杂/全面的布局设计的任何提示?

4

2 回答 2

10

任何带有前缀的属性layout_都是一个LayoutParams属性。虽然大多数视图属性在视图构建期间由视图本身解析,但 LayoutParams 是父视图的特殊参数,它提供有关父视图应如何调整子视图大小和位置的提示。哪些 LayoutParams 在视图上有效完全取决于父视图的类型。

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

layout_gravity是其父母中单个孩子的重力。gravity影响它出现的视图的内容。

您使用哪一种取决于您想要达到的结果。如果您希望布局在其边缘和所有内容之间具有固定数量的空间,则需要填充。如果要将布局自身的边缘移动一定距离,则需要边距。当您有没有设置背景的布局时,这两者在视觉上是等效的。当您开始创建复杂的 UI 时,其中的布局具有 9 个补丁背景,可以直观地对内容进行分组,差异变得明显。

于 2011-02-17T22:13:25.177 回答
-1

在此处输入图像描述

我希望你能看到填充和边距之间的区别。填充在间距内,而边距在间距外。

于 2017-04-13T07:07:18.247 回答