Android Layout xml中的评论


144

我想在布局XML文件中输入一些注释,我该怎么做?

Answers:


252

就像其他人说的那样,XML中的注释是这样的

<!-- this is a comment -->

请注意,它们可以跨多行

<!--
    This is a comment
    on multiple lines
-->

但是它们不能嵌套

<!-- This <!-- is a comment --> This is not -->

另外,您不能在标签内使用它们

<EditText <!--This is not valid--> android:layout_width="fill_parent" />

3
另外,注释中不能有双破折号,否则XML解析器会抱怨<!-这-引起问题,但是这不是->
Martin Belcher-AtWrk 2011年

如果使用的是Eclipse,则可以打开XML文件,将光标放在要添加注释的位置,然后从顶部菜单“源”->“添加块注释”中进行选择。另外,请按“ ctrl + shft + /”(即按住控制键和Shift键,然后按正斜杠键)。注释代码将在光标位于中间的位置创建,因此您可以开始输入。
LeBeau

7
>同样,您不能在标签内使用它们。真的很不幸。
linuxjava 2015年

38

万维网联盟(W3C)实际上定义了一个注释界面。定义说all the characters between the starting ' <!--' and ending '-->' form a part of comment content and no lexical check is done on the content of a comment

有关更多详细信息,请访问developer.android.com网站。

因此,您只需在任何开始和结束标记之间添加注释即可。在Eclipse IDE中,只需键入<!--将自动为您完成注释。然后,您可以在两者之间添加评论文本。

例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context=".TicTacToe" >

 <!-- This is a comment -->

</LinearLayout>

特别提及的目的in between是因为您不能在标签内使用它。

例如:

<TextView 
    android:text="@string/game_title"
    <!-- This is a comment -->
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"/>

是错误的,将给出以下错误

 Element type "TextView" must be followed by either attribute specifications, ">" or "/>".

1
注意:标签内无注释。这应该是选定的答案
Eslam Sameh Ahmed 2015年

1
向Android Studio团队提交了培训。如果我使用数据绑定,并且想在XML中写了一些数据绑定逻辑的行注释,则必须在其他地方注释,这对可见性或注释所指的部分没有帮助。这不是应该做的事情,应该使我们(开发人员)能够使用。
Chapz

19

XML注释以<!--和开头-->

例如:

<!-- This is a comment. -->

10

有两种方法可以做到这一点

  1. 以发表您的评论,"<!--"然后以“结束评论”-->"

    <!-- my comment goes here -->

  2. 突出显示要注释的部分,然后按CTRL + SHIFT + /


9

ctrl + shift + / 您可以注释代码。

<!--    
     <View
          android:layout_marginTop="@dimen/d10dp"
          android:id="@+id/view1"
          android:layout_below="@+id/tv_change_password"
          android:layout_width="fill_parent"
          android:layout_height="1dp"
          android:background="#c0c0c0"/>-->


4

可以注释INSIDE标签

可以创建可用于注释/文档编制目的的自定义属性。

在下面的示例中,documentation:info定义了一个属性,并带有示例注释值:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:documentation="documentation.mycompany.com"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relLayoutID"
    documentation:info="This is an example comment" >

    <TextView
        documentation:purpose="Instructions label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click here to begin."
        android:id="@+id/tvMyLabel"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        documentation:info="Another example comment"
        documentation:translation_notes="This control should use the fewest characters possible, as space is limited"
        />

</RelativeLayout>

请注意,在这种情况下,documentation.mycompany.com仅仅是新的自定义XML名称空间(的documentation)的定义,因此只是一个唯一的URI字符串 -它可以是任何东西,只要它是唯一的即可。该documentation到右边xmlns:也可以是任何东西-这工作了以同样的方式android:XML命名空间定义和使用。

使用此格式,可以创建任何数量的属性,诸如documentation:infodocumentation:translation_notes等,具有描述值一起,该格式是相同的任何XML属性。

综上所述:

  • xmls:my_new_namespace属性添加到XML布局文件中的根(顶层)XML元素。将其值设置为唯一字符串
  • 在文件内的任何子XML元素下,使用新的名称空间以及其后的任何单词来定义在编译时将被忽略的注释标签,例如 <TextView my_new_namespace:my_new_doc_property="description" />

1
请注意,这些属性在构建过程中不会被丢弃,而是存储在生成的APK中。考虑改用特殊的tools:名称空间,它确实会被丢弃。(发布此答案时可能不存在,但此页面继续吸引新观众。)
j__m

@j__m这是一个好点。我还没有研究过ProGuard是否可以自动删除它,也可以通过一些配置来删除它
CJBS

4

如果您想发表评论,Android Studio只需按:

Ctrl+ /在Windows / Linux上

Cmd/在Mac上为+ 。

这适用于XML文件(例如)和strings.xml代码文件(例如)MainActivity.java


3

点击

Ctrl + Shift + /

并写下您和evrything将在评论中的任何内容


0

您还可以通过按Ctrl + Shift + /和Shift + /一行来添加注释。


0

令人难以置信的是,在2019年使用Android Studio 3.3(我不知道确切的版本,至少是3.3)的情况下,可以对XML使用双斜杠注释。

但是,如果在xml中使用双斜杠注释,IDE会显示警告。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    // this works

    /* this works too */

    /*
    multi line comment
    multi line comment
    */

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World! yeah"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

它将显示警告Unexpected text found in layout file: ...
CoolMind

-2

从Federico Culloca的笔记中:

另外,您不能在标签内使用它们

手段; 您必须将注释放在文件的顶部或底部-您真正要添加注释的所有位置至少都在顶层布局标签内


9
这不是这个意思。您可以将注释完美地放在文件中间。它只需要位于其他标签之间。
Alex Che

更具体地说,它们必须按以下顺序:元素n的结束标记,注释,元素n + 1的开始标记。
ban-geoengineering
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.