¿Cuál es la diferencia entre @id y @ + id?

Acabo de empezar a usar Android, y tengo aproximadamente 5 archivos de diseño finalizados. Sin embargo, me acabo de dar cuenta de que he usado @id y @ + id de forma intercambiable, pero no estoy seguro de cuál es la diferencia exacta entre los dos.

Debe usar @+id cuando defina su propio Id para una Vista.

Exactamente de los documentos :

El símbolo at (@) al comienzo de la cadena indica que el analizador XML debe analizar y expandir el rest de la cadena ID e identificarla como un recurso ID. El símbolo más (+) significa que este es un nuevo nombre de recurso que debe crearse y agregarse a nuestros recursos (en el archivo R.java). Hay una serie de otros recursos de ID que ofrece el marco de Android. Al hacer referencia a una ID de recurso de Android, no necesita el símbolo más, pero debe agregar el espacio de nombre del paquete de Android.

Y ahora agrego para ti un ejemplo práctico:

   

Entonces, aquí creó dos IDs , comienza y marca. Luego, en su aplicación, puede conectarse con findViewById(R.id.start) .

Y este android:layout_below="@id/start" refiere a id.start existente y significa que su Button con verificación de id se colocará debajo del Button con inicio de id.

A veces tienes que usar + signo. Por ejemplo, cuando usa y el archivo incluido se ve así:

 < ?xml version="1.0" encoding="utf-8"?>  

Si no agrega + en "@+id/view_pager" , obtendrá un error al construir el proyecto:

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

Me sucedió en proyecto con bibliotecas.

android: id = “@ + id / my_button”

+ id Plus sing le dice a Android que agregue o cree una nueva identificación en Recursos.

android: layout_below = “@ id / my_button”

simplemente ayuda a referir la identificación ya generada.

Para acceder a un widget (o componente) en Java o hacer que otros dependan de él, necesitamos un valor único para representarlo. Ese valor único lo proporciona el atributo android: id, que básicamente agrega id proporcionado como un sufijo a @ + id / al archivo de recursos id para que otros lo consulten. Una ID para la barra de herramientas se puede definir así,

 android:id=”@+id/toolbar 

El siguiente ID ahora puede ser rastreado por findViewById (…) que lo busca en el archivo res para id, o simplemente en el directorio R.id y devuelve el tipo de vista en cuestión. El otro, @id, se comporta de la misma manera que findViewById (…) – busca el componente por el ID proporcionado, pero está reservado solo para diseños. El uso más general de esto es colocar un componente relativo al componente que devuelve.

 android:layout_below=”@id/toolbar”