Método getResourceId de TypedArray
Estoy leyendo docs acerca del método getResourceId () . Dice que:
Recupera el identificador de recurso para el atributo en el índice. Tenga en cuenta que atributo recurso como resuelto cuando se recupera el objeto general TypedArray. Como resultado, esta función devolverá el identificador de recurso del valor de recurso final que se encontró, no necesariamente el recurso original que fue especificado por el atributo.
- Error de diseño de Android: "Id de recurso <res_id> no es del tipo STYLE (en lugar de attr)"
- Cómo desasignar recursos de Android
- Uso de una carpeta de recursos en el proyecto de prueba para datos de cadena de prueba
- ¿Cómo puedo añadir una subcarpeta a la carpeta en bruto de mi aplicación para Android?
- NullPointerException con string-array en Spinner
Asi que
- El primer párrafo es claro:
Recupera el identificador de recurso para el atributo en el índice.
- El segundo es claro también:
Tenga en cuenta que atributo recurso como resuelto cuando se recupera el objeto general TypedArray.
- Pero ¿qué significa el párrafo 3? ¿Por qué podría devolver no necesariamente el id de recurso original ?
Como resultado, esta función devolverá el identificador de recurso del valor de recurso final que se encontró, no necesariamente el recurso original que fue especificado por el atributo.
- Recursos $ NotFoundException drawable-xhdpi de un recurso extraíble
- ¿Cuál es el ancho de pantalla más pequeño posible en Android?
- Acceso a recursos enteros en xml
- ¿Cómo puedo resolver este error en Android? (Terminado con un valor distinto de cero)
- Android: Cómo acceder a la carpeta de recursos de otra aplicación de Android
- ¿Cómo volver al estilo predeterminado en EditText si aplico un fondo?
- ¿Hay una necesidad de mantener ambos "layout" y "layout-sw400dp"?
- Cómo definir una matriz de enteros en un declarable-styleable?
De la documentación :
TypedArray obtainStyledAttributes (AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
….
Al determinar el valor final de un atributo particular, hay cuatro entradas que entran en juego:
- Cualesquiera valores de atributo en el AttributeSet dado.
- El recurso de estilo especificado en AttributeSet (denominado "style").
- El estilo predeterminado especificado por defStyleAttr y defStyleRes
- Los valores base en este tema.
Esto se debe a que la TypedArray
recursos debe suceder antes de recuperar el TypedArray
.
El sistema de generación de Gradle-base utiliza un nuevo mecanismo de fusión de recursos. En el sistema de compilación anterior, la fusión se realizó pasando una lista de carpetas de recursos a aapt que actuaban como superposiciones, junto con la opción –auto-add-overlay para asegurar que los nuevos recursos de las superposiciones se agregaran automáticamente (el comportamiento predeterminado es para las superposiciones es Para anular únicamente los recursos existentes, no crear nuevos).
Una de las metas del sistema de compilación basado en Gradle era proporcionar más flexibilidad, y una solicitud de característica frecuente fue la capacidad de tener más de una carpeta de recursos. Aapt no es capaz de manejar esto, por lo que el nuevo sistema de compilación introduce un nuevo mecanismo de fusión que se ejecuta antes de aapt y genera una única carpeta de recursos fusionada que se alimenta a aapt. Esta fusión tiene la ventaja de ser incremental, tanto a través de la detección de cambios de entrada / salida de Gradle, como en la forma en que se implementa (es decir, puede volver a ejecutar la fusión aplicando sólo el cambio en un solo archivo).
Los recursos combinados provienen de 3 tipos de fuentes:
- Los recursos principales, asociados con el sourceSet principal, generalmente se encuentran en src / main / res
- La variante se superpone, procedente del Tipo de construcción y Sabor (es).
- Las dependencias del Proyecto Biblioteca, que aportan recursos a través de la entrada de res en su paquete aar.
Por ejemplo, si utiliza diferentes buildTypes
o buildTypes
, puede tener diferentes recursos para cada sabor. Así que el que se estableció originalmente en el momento del desarrollo puede ser diferente de lo que realmente se presenta después de cambiar el sabor.
- Android – no puede poner el pulgar en el centro de una barra de búsqueda
- Cómo incrustar Wiktionary para acceso sin conexión en la aplicación de Android?