Hướng dẫn Custom Toast trong Android

Như mình đã nói ở bài Toast và Alert Dialog trong ứng dụng Android thì Toast được sử dụng rất nhiều trong Android. Nhưng nhiều lúc bạn thấy nó hiển thị quá đơn điệu, bạn muốn thay đổi cách hiển thị của nó trông cho đẹp hơn, vậy thì bạn hãy xem qua bài viết hướng dẫn Custom Toast trong Android này và sau khi xem xong bạn hãy tạo ra một Toast View theo ý thích của mình nhé.

Cách tạo một Custom Toast

Nói thì nghe kiểu dài dòng phức tạp nhưng làm thì dễ lắm, Custom Toast đơn giản chỉ là tạo ra cho nó một file xml layout mới và set nó vào Toast thôi, trong layout đó bạn có thể tùy chỉnh  cách hiển thị, thêm hình ảnh, background..vv

B1: Đầu tiên là kiếm cái icon, mình sẽ lấy hình này nhé: http://findicons.com/icon/89631/warning, bạn download file png về và đặt tên alert.png rồi copy vào thư mục res/drawable/ nhé

B2: Tiếp theo mình sẽ tạo một file xml trong mục res/drawable/mycustom_toast_border.xml đặt tên là mycustom_toast_border.xml , nội dung file như sau:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="2dp"
        android:color="#ff9500" />
    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />
    <corners android:radius="5dp" />
    <gradient
        android:angle="-90"
        android:endColor="#c4a20a"
        android:startColor="#fceaab" />
</shape>

Trong file xml trên mình có sử dụng cá thành phần sau:

  • shape: bạn có thể tạm hiểu đó là hình dạng, hình thù, nó chứa các thành phần con tạo nên giao diện cho cái Toast View đó
  • stroke: tạo border cho Toast View
  • padding: tạo khoảng cách từ nội dung Toast tới viền
  • corners: tạo viền bo tròn cho Toast View
  • gradient: tạo giải màu từ  trên xuống dưới bắt đầu từ màu #fceaab tới màu #c4a20a (angle=”-90″ có nghĩa là nó chạy từ trên xuống dưới, bạn có thể thay đổi nó).
Custom Toast trong Android
Custom Toast trong Android – Hình trên chính là xem trước của file xml trên

B3: Tiếp tục mình tạo thêm file mycustomtoast_layout.xml để trong thư mục res/layout/mycustomtoast_layout.xml, file này chính là định dạng layout hiển thị  cho toast:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_margin="5px"
    android:orientation="horizontal"
    android:padding="10dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/mycustom_toast_border">

        <ImageView
            android:id="@+id/imgCustomToast"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/alert" />

        <TextView
            android:id="@+id/tvCustomToast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:padding="3dp"
            android:text="Android Custom Toast"
            android:textColor="#fff"
            android:textSize="16dp" />

    </LinearLayout>

</LinearLayout>

File này bao gồm icon và nội dung Toast, nói chính xác là file xml này chứa nội dung của Custom Toast View.

Custom Toast trong Android - Hình trên chính là xem trước của file xml trên
Custom Toast trong Android –  xem trước của file xml trên

B4:  Tạo mới một activity và đặt tên CustomToastActivity, khi tạo mới activity thì nó sẽ tự sinh ra file activity_custom_toast.xml. Trong file activity_custom_toast sẽ có 1 button mình đặt tên là Show, khi bấm vào button này nó sẽ hiện thị ra Toast.

Nội dung file activity_custom_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="dev4u.com.alertdialogdemo.CustomToastActivity">

    <Button
        android:id="@+id/btnCustomToast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Show" />
</RelativeLayout>

Trong file CustomToastActivity bạn khai báo id cho button và bắt đầu code thôi.

Nội dung file CustomToastActivity:

package dev4u.com.alertdialogdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class CustomToastActivity extends AppCompatActivity {

    Button btnCustomToast;

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

        btnCustomToast = (Button) findViewById(R.id.btnCustomToast);
        btnCustomToast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = getLayoutInflater();
                View layout = inflater.inflate(R.layout.mycustomtoast_layout, null);

                TextView tvCustomToast = (TextView) layout.findViewById(R.id.tvCustomToast);
                tvCustomToast.setText("Đây là một custom toast!!");

                Toast toast = new Toast(getApplicationContext());
                //Set vị trí hiển thị cho Toast
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                //Thời gian hiển thị của Toast
                toast.setDuration(Toast.LENGTH_LONG);
                //Set layout mycustom_toast_border.xml cho Toast
                toast.setView(layout);
                //hiển thị Toast
                toast.show();
            }
        });

    }
}

B5: Thế là xong phần Custom Toast rồi đấy, bây giờ là lưu lại và chạy xem kết quả thôi, dưới đây là hình ảnh của cái Toast mình vừa Custom cho nó xong.

Custom Toast trong Android
Custom Toast trong Android – Hoàn thành

Lời kết

Qua bài viết hướng dẫn Custom Toast trong Android ngắn trên hi vọng bạn có thể tự tạo cho mình một Toast View đẹp và ưng ý. Trong quá trình tìm hiểu nếu bạn gặp bất kỳ lỗi nào hay có bất kỳ góp ý hay chia sẻ gì, mong bạn có thể để lại comment bên dưới hoặc gửi mail về [email protected]. Xin cảm ơn!!

Gom Marker trong Android với Google Maps Android API – Google Maps Android Marker Clustering Utility Sử dụng SwipeRefreshLayout trong ứng dụng Android Hướng dẫn tạo Material Dialog Bottom Sheet Android Tạo context menu trong Android – ActionBar ActionMode.CallBack Example Retrofit và Volley thư viện nào tốt hơn Hướng dẫn sử dụng thư viện Volley trong Android Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 2 Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1 Hàm chuyển đổi Timestamp thành Datetime trong Android và JavaScript Design Patterns là gì? Tạo Project Android theo mẫu Design Patterns(Part 2)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.