Bienvenidos sean a este post, hoy hablaremos sobre estilos y temas, como hemos visto hasta ahora al trabajar con layouts es muy parecido a crear paginas webs porque el lenguaje es similar al HTML y se maneja de forma similar al CSS (Cascade Style Sheet) pero ahora vamos a ahondar un poco mas en estos temas.

Anuncios

Estilos

Los estilos son colecciones de propiedades que definen el formato y la apariencia de una vista, nosotros podemos especificar el tamaño, margenes, color, fuentes, etc, el estilo es definido por medio de archivos XML, distinto al archivo XML Layout utilizado, veamos un ejemplo.

Primero vamos a crear el archivo donde se guardara el estilo, en este caso podemos usar el styles.xml, veamos su codigo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<style name="MiEstilo"
  		parent="@android:style/TextAppearence.Medium">
	  <item name="android:layout_width">match_parent</item>
	  <item name="android:layout_height">wrap_content</item>
	  <item name="android:textColor">#00FF00</item>
	  <item name="android:typeface">monospace</item>
	</style>
</resources>
Anuncios

Como pueden ver en este codigo vamos a crear cuatro items, el primero controla el ancho (layout_width), el segundo la altura (layout_height), el tercer item se encarga del color del texto (textColor), por ultimo el tipo de fuente (typeface)  y tambien vamos a tener un parent, este nos permtira heredar propiedades y a partir de estas propiedades realizar modificaciones, veamos como se implementa:

<TextView
  	style="@style/MiEstilo"
  	android:text = "Un texto" />

Como pueden ver, en este lo aplicamos a un elemento TextView, con la linea: style=”@style/MiEstilo”, podremos aplicar todas las propiedades a nuestro item. Este procedimiento equivaldria al siguiente codigo:

<TextView
  	android:layout_width"match_parent"
  	android:layout_height"wrap_content"
  	android:textColor"#00FF00"
  	android:typeface"monospace"
  	android:text = "Un texto" />

Como pueden ver, esto es exactamente a lo de arriba pero entonces, cual es la ventaja? Que el estilo creado podremos aplicarlo en otros items sin necesidad de tener que repetir las lineas en cada uno de ellos, esa es la verdadera utilidad y practicidad de utilizar estilos.

Anuncios

Por ultimo, los estilos tambien pueden tener herencia, se llama herencia a la capacidad de transferir propiedades o metodos entre distintas clases donde una es la padre (parent) y las otras hijas (childs), los estilos pueden transferir de un padre a sus hijos sus propiedades, veamos el siguiente ejemplo:

<style name="MiEstilo.grande">
	<item name="android:textSize">18pt</item>
</style>
Anuncios

En este caso lo hicimos heredero sin necesidad de utilizar el modificador parent, sino simplemente utilizando un punto (.) y un sufijo (grande) donde tendra como atributo el tamaño del texto pero a su vez hereda los atributos de MiEstilo, ahora si agregamos el siguiente estilo:

<style name="MiEstilo.grande.negrita">
	<item name="android:textStyle">bold</item>
</style>

Como pueden ver, agregamos otro punto y otro sufijo para crear un nuevo estilo, el cual se encargara de transformar el texto del item en negrita (bold) y a su vez aplicara los propiedades de los otros estilos porque por la herencia tendra acceso a los mismos esto puede parecer complicado pero no lo es tanto, pasmos al siguiente tema.

Anuncios

Temas

Los temas son iguales a los estilos pero con la diferencia que en lugar de aplicarse a una vista se hacen a toda la app o una actividad, y cada atributo del estilo se aplicara a los elementos correspondientes, es decir: textSize se aplicara a todos los elementos de tipo texto.

Por ejemplo podemos abrir el archivo manifests/AndroidManifest.xml y vamos a tener el siguiente codigo:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.example.maslayouts">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Anuncios

En este caso, observemos la linea encargada de nuestro estilo:

android:theme="@style/AppTheme"

Si necesitamos modificar por un tema personalizado simplemente debemos cambiarlo por:

android:theme="@style/MiEstilo"

Donde previamente tendremos un tema creado con ese nombre en styles.xml, en realidad va a ser un estilo pero como dijimos antes no se va a aplicar solamente a una vista sino al resto de la app.

Anuncios

Por ultimo, hay temas predeterminados en Android que pueden ser utilizados pero cabe aclarar que algunos funciones desde algunas versiones en adelante, no siempre van a verse igual en todos los dispositivos va a depender de la version de Android y puede tener cierta incompatibilidad con algunos widgets, elementos de la vista como el TextView o un boton, pero si creamos una app basica y no necesita temas muy personalizados utilizarlos es una buena opcion, aca les paso algunos:

  • Theme_Black, variante del tema Theme donde vuelve el fondo negro y es util para usarlo en galerias y videos
  • Theme_Black_NoTitleBar, similar al anterior pero sin la barra de titulos de la app
  • Theme_DeviceDefault_Panel, crea una ventana vacia transparente removiendo todos los aditamentos y permitiendo agregar nuevos elementos en la vista
  • Theme_DeviceDefault_Wallpaper, es utilizado para poner como fondo de nuestra app o actividad el fondo de pantalla del usuario.
Anuncios

Estos son algunos de los disponibles, si quieren cuales son todos les recomiendo ir a la siguiente pagina:

https://developer.android.com/reference/android/R.style

Donde encontraran el listado completo tanto de los temas como de los items visto en estilos, es util como referencia tenerla a mano.

Anuncios

En resumen, hoy hemos visto que son los estilos y los temas, los estilos son la capacidad de personalizar todas nuestras vistas cada una a su “estilo”, las mismas pueden ser herederas de otra superior (parent) y por ultimo los temas, que son basicamente estilos pero aplicados a nivel global a una app o una actividad, no se preocupen mas adelante hablaremos sobre actividades. Espero les haya gustado, sigueme en Twitter, Facebook o Google+ para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00