【问题标题】:Why does margin override marginLeft in Android (same with radius, etc)?为什么margin会覆盖Android中的marginLeft(与radius等相同)?
【发布时间】:2011-05-08 05:51:15
【问题描述】:

这对我来说毫无意义,来自 CSS。在 CSS 中,如果您指定一个边距,然后指定 margin-left,左边距将采用更精细的值。

在 Android 中,情况正好相反。 android:radius 也是如此,我敢肯定还有其他值。

我的问题是:为什么?...这毫无意义。这样做有一个单一的原因吗?

编辑:试图找到另一个 Google ADT/Android 错误http://code.google.com/p/android/issues/detail?id=7588的解决方案时提示

【问题讨论】:

  • 我不确定你是否会得到这个问题的答案,除非谷歌开发者在这里实现了这篇文章。你在期待什么?
  • 好吧,Google 确实在 SO 上正式提供了对 Android 的支持,为什么不呢? :P
  • 在CSS中,如果你指定一个margin然后margin-left,左边距将采用更细化的值。 - 这与粒度无关,CSS稍后在样式表中找到的规则会覆盖另一个(假设它们具有相同的特异性)。
  • Tgr,是的,好的,你是对的。然而,在 Android 中,顺序并不重要。

标签: android coding-style margin android-layout


【解决方案1】:

我也有同样的挫败感,但如果你仔细想想,应该使用哪个值?我知道在您的帖子中您说 CSS 使用“更精细的值”,但最终归结为像素,结果只是需要在两个像素值之间进行选择。 CSS 标准选择了一种方式,Android 选择了另一种方式,我认为这两种方式都没有错,它们只是不同而已。

【讨论】:

  • 我不同意 - 使用 CSS,您可以设置主值并仅为 1 个元素覆盖它。在 Android 中,主值会擦除所有这些值,因此它的功能几乎没有那么强大,因此如果您只想覆盖 1,则需要设置所有 4 个值。
  • 是的,我同意...这不是 CSS 中“选择”的,而是最后声明的那个。所以你声明 padding: 10px, padding-left: 20px;并且 padding-left 将覆盖填充,因为它是第二个。
  • 所以,我的教训是在定义样式时始终使用 layout_marginLeft / Right / Top / Bottom。这使客户能够在必要时进行覆盖。e
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2012-10-02
  • 2015-10-22
  • 1970-01-01
相关资源
最近更新 更多