Skip to content

Most visited

Recently visited

navigation

Acceso a recursos

Vista rápida

  • Se puede hacer referencia a los recursos desde el código mediante valores enteros de R.java, como R.drawable.myimage
  • Se puede hacer referencia a los recursos desde recursos mediante una sintaxis XML especial, como @drawable/myimage
  • También puedes acceder a los recursos de tu app con métodos en Resources

Clases fundamentales

  1. Resources

En este documento:

  1. Acceso a recursos desde código
  2. Acceso a recursos desde XML
    1. Referencia a atributos de estilo
  3. Acceso a recursos de la plataforma

Consulta también:

  1. Provisión de recursos
  2. Tipos de recursos

Una vez que proporciones un recurso en tu aplicación (se trata en Provisión de recursos), puedes aplicarlo al hacer referencia a su ID de recurso. Todos los ID de recursos se definen en la clase R de tu proyecto, que la herramienta aapt genera automáticamente.

Cuando se compila tu aplicación, aapt genera la clase R, que contiene ID de recurso de todos los recursos de tu directorio res/. Para cada tipo de recurso hay una subclase R (por ejemplo, R.drawable para todos los recursos de elementos de diseño), y para cada recurso de ese tipo hay un valor entero estático (por ejemplo, R.drawable.icon). Ese valor entero es el ID del recurso que puedes usar para recuperar tu recurso.

Si bien en la clase R se especifican los ID de recursos, no necesitarás buscar en ella para hallar uno. El ID de recurso siempre está compuesto por:

Existen dos maneras de acceder a un recurso:

Acceso a recursos en código

Puedes usar un recurso en código al pasar el ID de recurso como un parámetro del método. Por ejemplo, puedes establecer un ImageView para usar el recurso res/drawable/myimage.png con setImageResource():

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

También puedes recuperar recursos individuales con métodos en Resources, del cual puedes obtener una instancia con getResources().

Sintaxis

Esta es la sintaxis que necesitas para hacer referencia a un recurso en código:

[<package_name>.]R.<resource_type>.<resource_name>

Consulta Tipos de recursos para obtener más información acerca de cada tipo de recurso y cómo hacer referencia a ellos.

Casos de uso

Hay muchos métodos que aceptan un parámetro de ID de recurso y puedes recuperar recursos usando métodos en Resources. Puedes obtener una instancia de Resources con Context.getResources().

Aquí te mostramos algunos ejemplos de acceso a recursos en código:

// Load a background for the current screen from a drawable resource
getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ;

// Set the Activity title by getting a string from the Resources object, because
//  this method requires a CharSequence rather than a resource ID
getWindow().setTitle(getResources().getText(R.string.main_title));

// Load a custom layout for the current screen
setContentView(R.layout.main_screen);

// Set a slide in animation by getting an Animation from the Resources object
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
        R.anim.hyperspace_in));

// Set the text on a TextView object using a resource ID
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello_message);

Advertencia: Nunca debes modificar el archivo R.java manualmente; se genera a través de la herramienta aapt cuando se compila tu proyecto. Los cambios se invalidarán la próxima vez que compiles.

Acceso a recursos desde XML

Puedes definir valores para algunos atributos y elementos XML usando una referencia a un recurso existente. Generalmente harás esto cuando creas archivos de diseño para proporcionar strings e imágenes para tus widgets.

Por ejemplo, si agregas un Button a tu diseño, debes usar un recurso de string para el texto del botón:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/submit" />

Sintaxis

Esta es la sintaxis que necesitas para hacer referencia a un recurso en un recurso XML:

@[<package_name>:]<resource_type>/<resource_name>

Consulta Tipos de recursos para obtener más información acerca de cada tipo de recurso y cómo hacer referencia a ellos.

Casos de uso

En algunos casos debes usar un recurso para un valor en XML (por ejemplo, para aplicar una imagen de elemento de diseño a un widget), pero también puedes usar un recurso en XML en cualquier lugar donde se acepte un valor simple. Por ejemplo, si tienes el siguiente archivo de recurso que incluye un recurso de color y un recurso de string:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

Puedes usar estos recursos en el siguiente archivo de diseño para establecer el color del texto y la string de texto:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

En este caso no necesitas especificar el nombre del paquete en la referencia del recurso porque los recursos son de tu propio paquete. Para hacer referencia a un recurso del sistema, deberás incluir el nombre del paquete. Por ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@android:color/secondary_text_dark"
    android:text="@string/hello" />

Nota: Puedes usar recursos de strings en todo momento para poder localizar tu aplicación a otros idiomas. Para obtener información acerca de cómo crear recursos alternativos (como strings localizadas), consulta Provisión de recursos alternativos. Para acceder a una guía completa acerca de cómo localizar tu aplicación a otros idiomas, consulta Localización.

Incluso puedes usar recursos en XML para crear alias. Por ejemplo, puedes crear un elemento de diseño que sea un alias para otro recurso de elemento de diseño:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/other_drawable" />

Esto suena redundante, pero puede ser muy útil cuando se usa un recurso alternativo. Lee más acerca de la Creación de recursos de alias.

Referencia a atributos de estilo

Un recurso de atributo de estilo te permite hacer referencia al valor de un atributo en el tema aplicado actualmente. Hacer referencia a un atributo de estilo te permite personalizar la apariencia de elementos de la IU al diseñarlos para que coincidan con variaciones estándar proporcionadas por el tema actual, en lugar de proporcionar un valor codificado de forma rígida. Hacer referencia a un atributo de estilo esencialmente significa "usar el estilo identificado por el atributo en el tema actual".

Para hacer referencia a un atributo de estilo, la sintaxis del nombre es prácticamente idéntica al formato de recurso normal, pero en lugar del símbolo de arroba (@) usa un signo de interrogación (?). La sección de tipo de recurso es opcional. Por ejemplo:

?[<package_name>:][<resource_type>/]<resource_name>

Así es como puedes hacer referencia a un atributo para establecer el color de texto de modo que coincida con el color de texto "primario" del tema del sistema:

<EditText id="text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="?android:textColorSecondary"
    android:text="@string/hello_world" />

Aquí, el atributo android:textColor especifica el nombre de un atributo de estilo en el tema actual. Android ahora usa el valor aplicado al atributo de estilo android:textColorSecondary como el valor para android:textColor en este widget. Debido a que la herramienta de recursos del sistema reconoce que se prevé un recurso de atributo en este contexto, no necesitas indicar explícitamente el tipo (que sería ?android:attr/textColorSecondary); puedes excluir el tipo attr.

Acceso a recursos de la plataforma

Android contiene una cantidad de recursos estándar, como estilos, temas y diseños. Para acceder a esos recursos, califica la referencia a tu recurso con el nombre de paquete android. Por ejemplo, Android proporciona un recurso de diseño que puedes usar para enumerar elementos en un ListAdapter:

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));

En este ejemplo, simple_list_item_1 es un recurso de diseño definido por la plataforma para elementos en una ListView. Puedes usar esto en lugar de crear tu propio diseño para los elementos de la lista. Para obtener más información, consulta la guía para desarrolladores de Vista de lista.

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.