openplanning

Tạo một Android Toast tùy biến

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- Custom Toast

2- Ví dụ tùy biến Toast

Trên Android Studio tạo mới một project:
  • File > New > New Project > Empty Activity
    • Name: CustomToastExample
    • Package name: org.o7planning.customtoastexample
    • Language: Java
Copy một icon (icon_info.png) vào thư mục drawable của project.
Trong ví dụ này tôi sẽ sử dụng "Resource Layout File" để thiết kế giao diện cho Toast, bạn cũng có thể tạo giao diện cho Toast hoàn toàn bằng mã Java (Xem thêm trong ví dụ).
OK, Nhấn phải chuột vào thư mục "layout" và chọn:
  • New > Layout Resource File
  • File name: layout_custom_toast.xml
  • Root element: LinearLayout
  • Source set: main
  • Directory name: layout
Và bây giờ bạn có thể thiết kế giao diện cho Toast.
Sét đặt ID, Text, Padding, layout_weight cho các thành phần trên giao diện:
layout_custom_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="10sp">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:paddingRight="10sp"
        app:srcCompat="@drawable/icon_info" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Message" />
</LinearLayout>
Giao diện chính của ứng dụng:
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        android:text="Show Custom Toast"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java

package org.o7planning.customtoastexample;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button buttonShow;

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

        this.buttonShow = (Button) this.findViewById(R.id.button_show);
        this.buttonShow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                buttonShowClicked();
            }
        });
    }

    // Create Toast with "Resource Layout File".
    private void buttonShowClicked()  {
        LayoutInflater inflater = this.getLayoutInflater();

        View layout = inflater.inflate(R.layout.layout_custom_toast, null);
        // TextView in layout_custom_toast.
        TextView textView = (TextView) layout.findViewById(R.id.textView);
        textView.setText("This is a message");
        textView.setTextColor(Color.BLUE);
        // Create Toast
        Toast toast = new Toast(this);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();
    }

    // Create Toast without "Resource Layout File".
    private void buttonShowClicked2()  {
        LinearLayout layout  = new LinearLayout(this);
        layout.setOrientation(LinearLayout.HORIZONTAL);
        layout.setPadding(10,10, 10, 10);
        //
        ImageView imageView = new ImageView(this);
        imageView.setImageResource(R.drawable.icon_info);
        imageView.setPadding(0, 0, 10, 0);
        //
        TextView textView = new TextView(this);
        textView.setTextColor(Color.BLUE);
        textView.setText("This is a message");

        LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,0);
        layout.addView(imageView, params1);

        LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT,1);
        layout.addView(textView, params2);

        // Create Toast
        Toast toast = new Toast(this);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();
    }
}

Xem thêm các chuyên mục: