Forzar mayúsculas con NavigationView

En el fichero de estilos, definir un nuevo estilo:

<style name="navigation_view_text_style">
    <item name="android:textAllCaps">true</item>
</style>

A la hora de aplicarlo, tenemos dos opciones. Si queremos que aplique a todos los TextView incluyendo los de la vista “header”:

<android.support.design.widget.NavigationView
    ...
    app:theme="@style/navigation_view_text_style" />

Si sólo queremos que aplique a los items del listado:

<android.support.design.widget.NavigationView
    ...
    app:itemTextAppearance="@style/navigation_view_text_style" />

Saludos

Añadir iconos de Material Design directamente desde Android Studio

Existe un asistente en Android Studio, desde el cual podemos añadir una imagen vectorial (Vector Drawable) a nuestro proyecto. Para mostrarlo, en la carpeta “res” de nuestro proyecto, haremos click con el botón derecho y seleccionaremos “New > Vector Asset”.

Screen Shot 2016-05-30 at 13.09.48

Este asistente permite, además de importar un svg a nuestro proyecto, utilizar los iconos de Material Design.

Screen Shot 2016-05-30 at 13.13.08

De esta manera no es necesario descargarlos de la web cada vez (que es lo que venía haciendo).

Saludos

Ejecutar código cuando se descarta una SnackBar

En el ejemplo mostramos una snackbar con una acción para reintentar y queremos finalizar una actividad solo en el caso de que el usuario descarte la snackbar (por ejemplo haciendo swipe). Nunca cuando pulse la acción para reintentar.

Snackbar.make(coordinator, message, Snackbar.LENGTH_INDEFINITE)
        .setAction(R.string.retry, new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                // Retry operation
            }
        })
        .setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                if (event != Snackbar.Callback.DISMISS_EVENT_ACTION) {
                    // Close activity, only if snackbar was dismissed not pressing action button
                    finish();
                }
            }
        })
        .show();

En el método “onDismissed” podemos recuperar el evento generado y comprobar si es uno de los que nos interesa.

Estilos para las tipografías de Material Design

Para utilizar los estilos de texto definidos en la especificación Material Design existen los siguiente estilos en la librería v7 appcompat:

@style/TextAppearance.AppCompat.Display4
@style/TextAppearance.AppCompat.Display3
@style/TextAppearance.AppCompat.Display2
@style/TextAppearance.AppCompat.Display1
@style/TextAppearance.AppCompat.Display4
@style/TextAppearance.AppCompat.Headline
@style/TextAppearance.AppCompat.Title
@style/TextAppearance.AppCompat.Subhead
@style/TextAppearance.AppCompat.Body2
@style/TextAppearance.AppCompat.Body1
@style/TextAppearance.AppCompat.Caption

Para usarlos especificad la propiedad android:textAppearance:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="@style/TextAppearance.AppCompat.Title" />