Acabo de empezar a usar Android, y tengo aproximadamente 5 archivos de diseño terminados. 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.¿Cuál es la diferencia entre @id y @ + id?
Respuesta
Debe usar @+id
cuando defina su propio Id para una vista.
Exactamente desde docs:
El al-símbolo (@) al principio de la cadena indica que el analizador XML debe analizar y ampliar el resto de la cadena de ID y identificarlo como un recurso de ID. El signo más (+) significa que 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 son ofrecidos por Android framework. Al hacer referencia a un ID de recurso de Android , no necesita el símbolo más, pero debe agregar el espacio de nombre del paquete android .
Y ahora añado para usted ejemplo práctico:
<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"
/>
Así que aquí, se crearon dos IDs
, inicie y comprobar. Luego, en su aplicación, puede conectarse a ellos con findViewById(R.id.start)
.
Y esto android:layout_below="@id/start"
existentes se refieren a id.start
y significa que su Button
con id cheque se colocará por debajo Button
con id comenzar.
android: id = "@ +/Identificación del my_button"
+ Plus Identificación del cante dice androide para agregar o crear una nueva identificación en Recursos.
androide: layout_below = "@ id/my_button"
que sólo ayuda para referirse al ID ya generada ..
A veces hay que usar el signo +. P.ej. cuando se utiliza <include ... />
y el archivo se incluye el siguiente aspecto:
<?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"
/>
Si no se agrega +
en "@+id/view_pager"
obtendrá el error mientras que la construcción del proyecto:
Error:(9, 24) No resource found that matches the given name (at 'layout_anchor' with value '@id/view_pager').
Se me sucedió a mí en proyecto con bibliotecas.
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.Un identificador de barra de herramientas se puede definir como este,
android:id=”@+id/toolbar
El siguiente Identificación ahora pueden ser rastreados por findViewById (...), que lo busca en la res para presentar identificación, o simplemente 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”
- 1. diferencia entre @id y @android: id
- 2. Diferencia entre ID y datos-dojo-id
- 3. Diferencia entre Request.QueryString [ "id"] y Solicitud [ "id"]
- 4. Cuál es la diferencia entre $ doc.getElementById ("id") y document.getElementById ("id") en JSNI
- 5. ¿Cuál es la diferencia entre @ + id/android: list y @ + id/list
- 6. Objective-C: diferencia entre id y void *
- 7. Diferencia entre $ ("# id"). Load y $ .ajax?
- 8. Diferencia entre ID_objeto y ID normal
- 9. Columnas SlickGrid - Diferencia entre id y campo
- 10. ¿Cuál es la diferencia entre declarar una variable "id" y "NSObject *"?
- 11. Cuál es la diferencia entre $ y jQuery
- 12. Diferencia entre el ID de grupo de usuario y scopeGroupId
- 13. Diferencia entre ID de grupo de proceso y ID de trabajo en UNIX
- 14. ¿Cuál es la diferencia entre clases e ID en CSS? Explique con ejemplos de dónde usar
- 15. ¿Cuál es la convención de nomenclatura adecuada para una "ID" de propiedad: ID o Id?
- 16. ID, id o Id?
- 17. Diferencia entre los campos "id" y "_id" en MongoDB
- 18. ¿Cuál es la diferencia entre null y System.DBNull.Value?
- 19. ¿Cuál es la diferencia entre arrancar y recolectar en Rails?
- 20. ¿Cuál es la diferencia entre {0} y ""?
- 21. Cuál es la diferencia entre = y: =
- 22. ¿Cuál es la diferencia entre .ToString (+) y ""
- 23. Cuál es la diferencia entre $ (...) y `...`
- 24. ¿cuál es la diferencia entre:.! y: r !?
- 25. ¿Cuál es la diferencia entre ".equals" y "=="?
- 26. ¿Cuál es la diferencia entre dict() y {}?
- 27. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 28. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 29. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 30. ¿Cuál es la diferencia entre + = y = +?
Ok, gracias, ¿esto significa que puedo usar @ + id siempre que quiera sin problemas? – JuiCe
sí, cuando desee crear una nueva ID única, simplemente use @ + id como lo quieren decir los documentos. – Sajmon
@Sajmon creará un problema cuando uso android: layout_below = "@ + id/start" en lugar de android: layout_below = "@ id/start". ¿O puede crear un problema después de mucho tiempo? – Bora