【问题标题】:When are closing tags required with Android view markup?Android 视图标记何时需要结束标记?
【发布时间】:2012-12-28 08:20:19
【问题描述】:

对于某些 Android XML 属性,在插入格式化组件之前,不要以“>”结束开始标记。例如:

<EditText 
  android:id="@+id/etEmails"> 
</EditText>

为什么在开始和结束标签中没有定义 EditText 组件? 另外,我注意到有些甚至不需要结束标记,它们本身就是 XML 语句。例如:

<Button
  android:text="Subtract 1"
  android:id="@+id/buttSub"
  />

当这个 XML 语句实际上提供与 EditText 字段相同的组件时,为什么它不需要结束语句?

  • 是否有一种故障安全方法可以知道哪些需要打开和 结束语句的正确语法?

  • 是否有列表/参考说明哪些可以做哪些不做?

  • 这些不同的组件有什么区别?

【问题讨论】:

  • 我认为这是一个很好的问题。不知道为什么投反对票。 XML 的正确性可能变化无常,尤其是当某些元素/模式无法与短标签一起使用时。呸!

标签: android syntax android-xml


【解决方案1】:

&lt;Button /&gt; 是所谓的短标签。这是安全的。

如果一个标签没有body,你可以省略结束标签并在标签末尾添加一个斜杠,这意味着这个标签没有子标签。

这种表示法在 xhtml 中对于 &lt;br /&gt;&lt;img src="" alt="" /&gt; 标记非常常见。

好处是你不需要写结束标签,这样更容易阅读,如果你有一个巨大的 xml 文件,那么需要传输的数据就更少了。 (在这种情况下,Android 不算在内,因为 android SDK 在内部生成了一个二进制文件。)

【讨论】:

  • &lt;EditText /&gt; 怎么样,安全吗?是否与&lt;EditText&gt;&lt;/EditText&gt; 相同?如果不是,怎么办?这有关系吗?如果是,如何知道使用哪种形式?
  • @pst 你是对的,这很重要,但在这种特殊情况下,自闭合标签和普通标签之间没有区别。如果没有,请告诉我,我很高兴能学到一些东西:)
  • 我不使用 Android XML :-) 但是我遇到过这样的情况:如果使用自闭合标签而不是空标签,ASP.NET 控件标记将可怕地死掉。当然,这也可能只是一个糟糕的 ASP.NET 控件..(我赞成这个答案,但很高兴看到一些指向 Android 视图 XML 文档等的链接,证明使用 &lt;EditText /&gt; 是合理的特别是因为这就是问题所包含的内容。)
  • @pst 我同意你的观点,真正的参考会很好,但我从来没有在 android 的上下文中读过它。甚至 official documentation 简单的也使用了自闭合标签而没有解释原因。可视化编辑器也使用它们,只要您有一个子节点,就会使用普通标签。
【解决方案2】:

如果没有像这样的其他元素,例如 &lt;something&gt;&lt;/something&gt; 在另一个元素内,则可以使用结束标记 /&gt;。因此,在您的示例中,EditText 也可以以 /&gt; 标记结尾。

当您想向 EditText 添加另一个元素时,您需要使用 . 关闭 EditText 的 XML。

【讨论】:

    【解决方案3】:

    for '>' 用 XML 编写

    请按以下方式写

    android:text="Subtract &gt; 1"
    

    【讨论】:

    • 这回答了一些其他问题,但不是这个。
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多