Komentarze w formacie XML Layout systemu Android


144

Chciałbym wprowadzić kilka komentarzy do plików XML układu, jak mam to zrobić?

Odpowiedzi:


252

Jak powiedział inny, komentarz w XML wygląda tak

<!-- this is a comment -->

Zauważ, że mogą obejmować wiele linii

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

Ale nie można ich zagnieżdżać

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

Nie możesz ich również używać wewnątrz tagów

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

3
Nie możesz też mieć podwójnego myślnika w komentarzu, bo parser XML narzeknie <! - to - powoduje problem, ale to - nie ->
Martin Belcher - AtWrk

Jeśli korzystasz z Eclipse, możesz otworzyć plik XML, umieścić kursor w miejscu, w którym chcesz umieścić komentarz, wybrać z górnego menu Źródło -> Dodaj komentarz blokowy. Ponadto „ctrl + shft + /” (to znaczy przytrzymaj Ctrl i Shift, a następnie naciśnij prawy ukośnik). Kod komentarza zostanie utworzony z kursorem pośrodku, więc możesz po prostu zacząć pisać.
LeBeau

7
> Nie możesz ich także używać wewnątrz tagów. Całkiem niefortunne, naprawdę.
linuxjava

38

Konsorcjum World Wide Web Consortium (W3C) faktycznie zdefiniowało interfejs komentarzy. Definicja mówi 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.

Więcej szczegółów jest dostępnych w witrynie developer.android.com .

Możesz więc po prostu dodać swój komentarz między dowolnym znacznikiem początkowym i końcowym. W Eclipse IDE zwykłe wpisanie <!--spowoduje automatyczne uzupełnienie komentarza. Następnie możesz dodać tekst komentarza pomiędzy.

Na przykład:

<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>

Celem konkretnej wzmianki in betweenjest to, że nie można jej używać wewnątrz tagu.

Na przykład:

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

jest błędne i spowoduje następujący błąd

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

1
Uwaga: brak komentarzy w tagach. To powinna być wybrana odpowiedź
Eslam Sameh Ahmed

1
Przesłano ulepszenie do zespołu Android Studio. Jeśli używam powiązania danych i chcę skomentować wiersz w XML, w którym napisałem jakąś logikę powiązania danych, muszę skomentować gdzie indziej i nie pomaga to w widoczności ani do której części odnosi się komentarz. To nie jest coś, co powinno być niemożliwe do zrobienia i powinno być dostępne dla nas (programistów).
Chapz

19

Komentarze XML zaczynają się <!--i kończą na -->.

Na przykład:

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

10

Możesz to zrobić na dwa sposoby

  1. Zacznij swój komentarz od, "<!--"a następnie zakończ swój komentarz znakiem „-->"

    Przykład <!-- my comment goes here -->

  2. Zaznacz część, którą chcesz skomentować i naciśnij CTRL + SHIFT + /


9

ctrl + shift + / Możesz skomentować kod.

<!--    
     <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

Komentarze INSIDE możliwe

Możliwe jest tworzenie niestandardowych atrybutów, które mogą być używane do celów komentowania / dokumentacji.

W poniższym przykładzie documentation:infozdefiniowano atrybut z przykładową wartością komentarza:

<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>

Zauważ, że w tym przypadku documentation.mycompany.comjest to tylko definicja nowej niestandardowej przestrzeni nazw XML (of documentation), a zatem jest to tylko unikalny ciąg URI - może to być wszystko, o ile jest unikalny. Po documentationprawej stronie xmlns:może też być dowolne słowo - działa to tak samo, jak android:definiowana i używana jest przestrzeń nazw XML.

Korzystanie z tego formatu, dowolną liczbę atrybutów mogą być tworzone, na przykład documentation:info, documentation:translation_notesitd., Wraz z wartością opis, format jest taki sam jak każdy atrybut XML.

W podsumowaniu:

  • Dodaj xmls:my_new_namespaceatrybut do głównego (najwyższego) elementu XML w pliku układu XML. Ustaw jego wartość na unikalny ciąg
  • Pod dowolnym podrzędnym elementem XML w pliku użyj nowej przestrzeni nazw i dowolnego następującego po niej słowa, aby zdefiniować tagi komentarza, które są ignorowane podczas kompilacji, np. <TextView my_new_namespace:my_new_doc_property="description" />

1
Pamiętaj, że te atrybuty nie zostaną odrzucone podczas procesu kompilacji, ale zostaną zapisane w wynikowym pliku APK. tools:Zamiast tego rozważ użycie specjalnej przestrzeni nazw, która zostanie odrzucona. (Prawdopodobnie nie istniał, kiedy ta odpowiedź została opublikowana, ale ta strona wciąż
zyskuje

@j__m To dobra uwaga. Nie sprawdziłem, czy ProGuard może to usunąć automatycznie, czy przy odrobinie konfiguracji ...
CJBS,

4

Jeśli chcesz skomentować, Android Studiopo prostu naciśnij:

Ctrl+ /w systemie Windows / Linux

Cmd+ /na Macu.

Działa to w plikach XML, takich jak strings.xmlpliki z kodem, takie jak MainActivity.java.


3

Kliknij

ctrl + shift + /

i napisz wszystko, co ty i wszystko będzie w komentarzach


0

możesz również dodać komentarz, naciskając Ctrl + Shift + / i Shift + / dla jednej linii.


0

Niewiarygodne, że w 2019 roku z Androidem Studio 3.3 (nie znam dokładnej wersji, przynajmniej 3.3) można zastosować komentarz z podwójnym ukośnikiem do xml.

Ale jeśli użyjesz komentarza z podwójnym ukośnikiem w xml, IDE wyświetli ostrzeżenie.

<?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>

Pokaże ostrzeżenie Unexpected text found in layout file: ....
CoolMind

-2

Z notatki Federico Culloca:

Nie możesz ich również używać wewnątrz tagów

Znaczy; musisz umieścić komentarz na górze lub na dole pliku - wszystkie miejsca, w których naprawdę chcesz dodać komentarze, znajdują się przynajmniej wewnątrz znacznika układu najwyższego poziomu


9
To nie oznacza tego. Możesz idealnie umieścić komentarz gdzieś w środku pliku. Po prostu musi znajdować się między innymi tagami.
Alex Che

Dokładniej, muszą być w następującej kolejności: tag zamykający elementu n, komentarz, tag otwierający elementu n + 1.
zakaz geoinżynierii
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.