В чем разница между @id и @ + id?

Я только что начал использовать android, и закончилось около 5 макетов. Тем не менее, я просто понял, что я использую @id и @ + id взаимозаменяемо, но я не уверен, что такое точная разница между ними.

Вам нужно использовать @+id когда вы определяете свой собственный идентификатор для представления.

Именно из документов :

Символ at (@) в начале строки указывает, что синтаксический анализатор XML должен анализировать и расширять остальную строку идентификатора и идентифицировать его как ресурс идентификатора. Символ плюса (+) означает, что это новое имя ресурса, которое должно быть создано и добавлено к нашим ресурсам (в файле R.java). Существует ряд других ресурсов ID, которые предлагаются платформой Android. Когда вы ссылаетесь на идентификатор ресурса Android, вам не нужен символ плюса, но он должен добавить пространство имен пакета android.

И теперь я добавляю для вас практический пример:

 <Button android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/start" /> 

Итак, здесь вы создали два IDs , запустите и проверьте. Затем в приложении вы можете подключиться к ним с findViewById(R.id.start) .

И этот android:layout_below="@id/start" относится к существующему id.start и означает, что ваша Button с проверкой id будет расположена ниже Button с запуском id.

андроид: идентификатор = "@ + идентификатор / my_button"

+ Id Плюс петь говорит android, чтобы добавить или создать новый идентификатор в Ресурсах.

андроид: layout_below = "@ идентификатор / my_button"

Он просто помогает ссылаться на уже сгенерированный идентификатор.

Иногда вам приходится использовать знак +. Например, когда вы используете <include ... /> и включенный файл выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.FloatingActionButton xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" (...) app:layout_anchor="@+id/view_pager" app:layout_anchorGravity="top|right|end" /> 

Если вы не добавите + в "@+id/view_pager" вы получите ошибку при построении проекта:

 Error:(9, 24) No resource found that matches the given name (at 'layout_anchor' with value '@id/view_pager'). 

Это случилось со мной в проекте с библиотеками.