Android: personaliza un Toast

Siguiendo con la regla de personalizar todos los componentes acorde al diseño de nuestra aplicación, hoy traigo un código para personalizar un Toast (mensaje en pantalla). Para empezar definimos el “layout” del toast dentro de la carpeta layout, se llamará “custom_toast_layout”.

<!--?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:id="@+id/relativeLayout1"
    android:background="@drawable/rounded">

    <TextView
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/textView1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:text="Adrián García"
        android:gravity="center"
        android:textColor="@android:color/black">
    </TextView>

    <ImageView
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:src="@mipmap/ic_launcher"
        android:layout_below="@+id/textView1"
        android:layout_margin="5dip"
        android:id="@+id/imageView1">
    </ImageView>

    <TextView
        android:id="@+id/textView2"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:text="Sígueme en Google +, Adrián García Estaún!"
        android:gravity="center"
        android:layout_below="@+id/imageView1"
        android:textColor="@android:color/black">
    </TextView>

</RelativeLayout>

Si os fijáis la propiedad background del nodo raíz (RelativeLayout) apunta a un recurso dentro de la carpeta drawable, este recurso define el color, el borde y las esquinas. Creamos el recurso dentro de la carpeta drawables y se llamará “rounded”.

<!--?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    android:radius="5dp"/>
    android:color="#B2DFDB"/>
    android:color="#26A69A" android:width="2dp"/>
</shape>

Ahora en el layout de la activity desde la que queramos mostrar el toast (MainActivity en este caso) creamos un botón.

xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnToast"
        android:text="Mostrar Toast"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"/>

</RelativeLayout>

Y finalmente en el código de la activity (MainActivity en este caso), identificamos el botón del layout e implementamos el método onClick. Dentro de este método definimos un toast y lo inflamos con el layout que hemos definido al principio “custom_toast_layout”.

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {

    private Button btnToast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnToast = (Button)findViewById(R.id.btnToast);

        btnToast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = getLayoutInflater();
                View view = inflater.inflate(R.layout.custom_toast_layout, (ViewGroup) findViewById(R.id.relativeLayout1));

                Toast toast = new Toast(getApplicationContext());
                toast.setView(view);
                toast.show();
            }
        });
    }
}

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s