Imprimir

Otro posible tipo de recursos que puedes declarar en un proyecto de aplicación Android son las dimensiones que se pueden aplicar a los diferente objetos View que puedes colocar en un Layout. Como el resto de recursos, las dimensiones deben usarse de manera literal o bien declararlos en un archivo XML.

Valores literales para dimensiones

Los valores para las dimensiones se especifican indicando un número seguido de una unidad de medida. Por ejemplo, 10px, 2in, 5sp. Las posibles unidades de medida para las dimensiones son las siguientes:

En las siguientes imágenes puedes ver la diferencia de visualización de un texto usando las diferentes unidades de medida. La primera imagen corresponde a una pantalla de 3,7", la segunda es de 2,7" y la tercera de 4", en dispositivos con la misma densidad de puntos. Observa que el tamaño del texto correspondiente a la unidad dp no varía en proporción en todas las pantallas. Se puede apreciar que los textos con unidades de medida independientes de la densidad (dp y sp), ocupan siempre un 85% de la pantala aproximadamente. Observa también que los textos con unidades de medida de milímetros y pulgadas siempre miden igual físicamente independientemente del tamaño de la pantalla del dispositivo Android. 

dimensiones01dimensiones02dimensiones03

En las siguientes imágenes puedes ver la diferencia de las unidades dp y sp. En la primera imagen, el tamaño de fuente del sistema es normal, mientras que en la segunda se ha cambiado la configuración del sistema para que se aumente el tamaño de fuente un 130%. Observa que únicamente cambia el tamaño del texto medido en sp.

dimensiones05dimensiones04

 Archivo de recursos de dimensiones

Las dimensiones pueden almacenarse en un archivo de recursos XML como cualquier otro recurso en las aplicaciones Android. También en este caso, el archivo debe almacenarse en la carpeta res/values. El archivo puede tener cualquier nombre aunque es habitual nombrarlo como dimens.xml.

Si no existe ese archivo en tu proyecto, puedes crearlo desde Eclipse usando el menú File o el menú contextual del proyecto, seleccionando la opción New > Android XML File. En la primera ventana del asistente para la creación del archivo XML selecciona o comprueba que está seleccionado el tipo de recurso Values, y en el nombre del archivo indica, como se recomienda, dimens.xml.

A continuación puedes ver un ejemplo de dicho archivo con dos dimensiones declaradas:

{code class="brush:xml"}<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="texto_principal">30dp</dimen>
<dimen name="texto_secundario">20dp</dimen>
</resources>{/code}

Desde el editor visual puedes gestionar también las dimensiones declaradas. Desde ahí puedes añadir nuevas dimensiones, editar, eliminar y ordenarlas. Para añadir nuevas dimensiones, tan sólo debes usar el botón Add y elegir en la lista la opción Dimension.

dimensiones06

En la parte derecha aparece el detalle de la dimensión que se está añadiendo o editando, donde se debe indica un nombre para la dimensión, y su valor asociado siguiendo uno de los formatos comentados anteriormente.

dimensiones07

Recuerda guardar los cambios usando la combinación de teclas Ctrl+S o el menú File > Save.

Uso de colores desde XML

Puedes asignar un valor literal a cualquier propiedad de un objeto View que admita una dimensión. Por ejemplo, el tamaño de texto o el tamaño de los márgenes. Si quieres establecer una dimensión usando su valor literal, tan sólo debes indicar dicho valor en la propiedad adecuada. Por ejemplo, en la siguiente imagen se ha establecido la dimensión 20dp a la propiedad TextSize.

dimensiones08

Para hacer referencia a una dimensión declarada en el archivo de recursos dimens.xml desde otro fichero XML (por ejemplo, desde un layout), debes usar el formato habitual para hacer referencia a un recurso desde XML, indicando en este caso que es un recurso de tipo dimen:

@dimen/nombre_dimensión

Por ejemplo, si se quiere cambiar el tamaño del texto de un TextView debes indicar la referencia a la dimensión en la propiedad Text Size.

dimensiones09

{code class="brush:xml;highlight:[6]"}<TextView
android:id="@+id/TextView02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Ejemplo de texto (10pt)"
android:textSize="@dimen/texto_secundario" />{/code}

Si lo haces desde el editor visual, puedes utilizar el botón de los puntos suspensivos que puedes ver en la parte derecha de la propiedad, para buscar la dimensión entre todas las que tienes declaradas en el proyecto.

Uso de dimensiones desde código Java

Para asignar una dimensión a una propiedad de un objeto View desde código Java puedes usar el método set correspondiente al atributo al que quieres cambiar la propiedad, por ejemplo, setTextSize para cambiar el tamaño del texto.

void setTextSize(float size)

A este método se le pasa por parámetro la medida en unidades sp.

Si se desea pasar una dimensión almacenada en un archivo de recursos, hay que obtener previamente dicha medida como se ve en este ejemplo:

{code}TextView textView1 = (TextView) findViewById(R.id.textView1);
float dimension1 = getResources().getDimension(R.dimen.texto_secundario);
textView1.setTextSize(dimension1);{/code}