Комментарии в Android Layout xml


145

Я хотел бы добавить некоторые комментарии в файлы макета XML, как бы я это сделал?

Ответы:


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

Если вы используете Eclipse, вы можете открыть файл XML, поместить курсор туда, где вы хотите комментарий, выберите из верхнего меню Source -> Add Block Comment. Кроме того, "Ctrl + Shft + /" (то есть, удерживайте нажатой клавишу управления и клавишу Shift, а затем нажмите клавишу косой черты). Код комментария будет создан с вашим курсором посередине, так что вы можете просто начать печатать.
ЛеБо

7
> Также вы не можете использовать их внутри тегов. Довольно неудачно на самом деле.
linuxjava

38

Консорциум World Wide Web (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
Примечание: внутри тегов нет комментариев. Это должен быть выбранный ответ
Эслам Самех Ахмед

1
Подчинилось увлечению командой Android Studio. Если я использую привязку данных и хочу комментировать строку в XML, где я написал некоторую логику привязки данных, я должен комментировать где-то еще, и это не помогает с видимостью или к какой части относится комментарий. Это не то, что должно быть невозможно сделать, и мы должны его использовать (разработчики).
Чапз

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

Комментарии внутри теги возможны

Можно создавать собственные атрибуты, которые можно использовать для комментирования / документирования.

В приведенном ниже примере определен 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 (of documentation), и, таким образом, это просто уникальная строка URI - она ​​может быть любой, если она уникальна. documentationСправа от xmlns:также может быть что угодно - это работает точно так же , что android:XML - пространство имен определяется и используется.

Используя этот формат, можно создать любое количество атрибутов, таких как documentation:infoи documentation:translation_notesт. Д., Вместе со значением описания, формат которого такой же, как у любого атрибута XML.

В итоге:

  • Добавьте xmls:my_new_namespaceатрибут в корневой (верхний) элемент XML в файле макета XML. Установите его значение в уникальную строку
  • Под любым дочерним XML-элементом в файле используйте новое пространство имен и любое следующее слово для определения тегов комментариев, которые игнорируются при компиляции, например <TextView my_new_namespace:my_new_doc_property="description" />

1
Обратите внимание, что эти атрибуты не будут отброшены во время процесса сборки, а вместо этого будут сохранены в результирующем APK. Попробуйте tools:вместо этого использовать специальное пространство имен, которое отбрасывается. (Вероятно, его не было, когда этот ответ был опубликован, но эта страница продолжает привлекать новых зрителей.)
19

@j__m Это хороший момент. Я не изучал, может ли ProGuard удалить это либо автоматически, либо с небольшой настройкой ...
CJBS

4

Если вы хотите оставить комментарий, Android Studioпросто нажмите:

Ctrl+ /в Windows / Linux

Cmd+ /на Mac.

Это работает как в XML-файлах, strings.xmlтак и в кодовых файлах MainActivity.java.


3

нажмите на

Ctrl + Shift + /

и пиши что нибудь у тебя и все будет в комментариях


0

Вы также можете добавить комментарий, нажав Ctrl + Shift + / и Shift + / для одной строки.


-1

Невероятно, но в 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

Из записки Федерико Каллоки:

Также вы не можете использовать их внутри тегов

Средства; Вы должны поместить комментарий вверху или внизу файла - все места, куда вы действительно хотите добавить комментарии, находятся по крайней мере внутри тега макета верхнего уровня.


9
Это не значит это. Вы можете отлично разместить комментарий где-то посередине файла. Это просто должно быть между другими тегами.
Алекс Че

Более конкретно, они должны быть в следующем порядке: закрывающий тег элемента n, комментарий, открывающий тег элемента n + 1.
запрет геоинженерии
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.