12/08/2018, 14:36

Android Toast

Toast trong Android có lẽ ai lập trình Android đều cũng đã biết và sử dụng khá nhiều. Ở bài này mình tóm tắt một số tùy chỉnh và một số đặc tính của nó, để có thể dễ dàng tùy biến trong quá trình sử dụng. Đầu tiên thì Toast là một message, có dạng như một popup, xuất hiện trên màn hình trong 1 ...

Toast trong Android có lẽ ai lập trình Android đều cũng đã biết và sử dụng khá nhiều. Ở bài này mình tóm tắt một số tùy chỉnh và một số đặc tính của nó, để có thể dễ dàng tùy biến trong quá trình sử dụng. Đầu tiên thì Toast là một message, có dạng như một popup, xuất hiện trên màn hình trong 1 khoảng thời gian ngắn và tự biến mất sau đó.

1. Khởi tạo Toast

  • Để sử dụng Toast, một cách thông thường và hay dùng nhất là
Toast.makeText(context, "This is a message", Toast.LENGTH_LONG).show();

Ở đây dùng hàm static makeText, nên hệ thống sẽ sử dụng layout default com.android.internal.R.layout.transient_notification để inflate cho view của Toast. Trong đó có chứa 1 TextView, message truyền vào sẽ được settext vào TextView đó.

Param thứ 3 là duration, đơn vị ở đây không phải là s hay ms, mà đơn giản chỉ là 1 số int, duration thực sự khi hiển thị toast sẽ dùng cái này để check, ở đây Android thông báo là chỉ nhận 2 giá trị là Toast.LENGTH_LONG(1) và Toast.LENGTH_SHORT(0), tuy nhiên bạn có thể đặt giá trị khác cũng được, IDE chỉ cảnh báo thôi vẫn run bình thường, tuy nhiên:

private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds

..............
long delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;

nhìn vào đây thì thấy là nếu set duration bằng 1(Toast.LENGTH_LONG) thì giá trị khi show sẽ là 3.5 giây, nếu khác thì sẽ là 2 giây, bất kể có phải là Toast.LENGTH_SHORT hay 1 số nào khác, thời gian show cho 1 Toast không có hàm set, mặc định chỉ là 3,5 và 2.

  • Nếu bạn muốn có một Toast của riêng bạn, thì có thể tự custom View cho Toast của mình, sẽ có hàm setView cho bạn:
        LinearLayout view = new LinearLayout(this);
        view.setBackgroundColor(Color.GRAY);
        ImageView img = new ImageView(this);
        img.setImageResource(R.mipmap.ic_launcher);
        TextView textView = new TextView(this);
        textView.setText("Test Custom Toast");
        view.addView(img);
        view.addView(textView);
        Toast toast = new Toast(this);
        toast.setView(view);
        toast.show();

Mặc định không set gì thì duration sẽ là LENGTH_SHORT.

2. Các thuộc tính khác

Ngoài ra có thể sử dụng được một số method khác cho Toast Ví dụ thêm vào đoạn code trên

toast.setGravity(Gravity.END| Gravity.TOP, 50 ,200);

thì sẽ được kết quả là Có thể dùng hàm này để tùy chỉnh vị trí hiển thị trên màn hình

  • Một điều đáng chú ý nữa là hàm setMargin, margin ở đây không phải là pixel hay dp, mà tính bằng phần trăm: ví dụ set :
        toast.setGravity(Gravity.START | Gravity.TOP, 0, 0);
        toast.setMargin(50f / 100, 20f / 100);

thì cạnh trái của Toast sẽ cách cạnh trái view = 20% chiều rộng của view, mép trên của Toast cách cạnh trên của view = 50% chiều dài của view

Trên đây là một số ví dụ và cách sử dụng Toast trong Android

Thank you for reading and happy new year!

0