Android自定义Toast样式(附工具类)

2022-07-26,,,,

Android自定义Toast样式(附工具类)

效果图:

工具类ToastUtil.java

ToastUtil.java

public class ToastUtil {

    /**
     * Toast类型
     */
    public static enum Type{
        // 成功
        SUCCEED,
        // 错误
        ERROR,
        // 信息,通常
        POINT,
        // 警告
        WARNING;
    }

    /**
     * 系统的Toast
     *
     * @param info
     */
    public static void showToast(String info){
        Toast.makeText(App.getContext(), info, Toast.LENGTH_SHORT).show();
    }

    /**
     * 各种类型的 Toast
     *
     * @param info
     * @param type
     */
    public static void showCus(String info, Type type){
        Toast toast = new Toast(App.getContext());
        View view = null;
        switch (type){
            case POINT:
                // 提示型Toast
               view = LayoutInflater.from(App.getContext()).inflate(R.layout.layout_toast_point, null);
               break;
            case SUCCEED:
                // 操作成功Toast
                view = LayoutInflater.from(App.getContext()).inflate(R.layout.layout_taost_succeed, null);
                break;
            case ERROR:
                // 错误Toast
                view = LayoutInflater.from(App.getContext()).inflate(R.layout.layout_toast_error,null);
                break;
            case WARNING:
                // 警告Toast
                view = LayoutInflater.from(App.getContext()).inflate(R.layout.layout_toast_warning,null);
                break;
            default:
                break;
        }

        if(view != null) {
            TextView tv = view.findViewById(R.id.toast_info);
            tv.setText(info);
            toast.setDuration(Toast.LENGTH_SHORT);
            // 这里是修改Toast的显示位置
            // toast.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 120);
            toast.setView(view);
            toast.show();
        }else {
            showToast(info);
        }
    }

用到的四种布局:

(提示型)layout_toast_point.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_toast_point"
    >
    <ImageView
        android:id="@+id/img"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:background="@drawable/point"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        />
    <TextView
        android:id="@+id/toast_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="提示型"
        android:textColor="#ffffff"
        android:paddingTop="11dp"
        android:paddingBottom="12dp"
        android:paddingRight="11dp"
        android:paddingLeft="5dp"
        android:textSize="15sp"
        android:layout_toRightOf="@+id/img"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

(操作成功型)llayout_taost_succeed.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_toast_succeed"
   >
    <ImageView
        android:id="@+id/img"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:background="@drawable/succeed"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        />
    <TextView
        android:id="@+id/toast_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="asdadasdasdasdasdasdsa"
        android:textColor="#ffffff"
        android:paddingTop="11dp"
        android:paddingBottom="12dp"
        android:paddingRight="11dp"
        android:paddingLeft="5dp"
        android:textSize="15sp"
        android:layout_toRightOf="@+id/img"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

(错误型)layout_toast_error.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_toast_error"
   >
    <ImageView
        android:id="@+id/img"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:background="@drawable/error"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        />
    <TextView
        android:id="@+id/toast_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="asdadasdasdasdasdasdsa"
        android:textColor="#ffffff"
        android:paddingTop="11dp"
        android:paddingBottom="12dp"
        android:paddingRight="11dp"
        android:paddingLeft="5dp"
        android:textSize="15sp"
        android:layout_toRightOf="@+id/img"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

(警告型)layout_toast_warning.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shape_toast_warning"
    >
    <ImageView
        android:id="@+id/img"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:background="@drawable/warning"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        />
    <TextView
        android:id="@+id/toast_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="asdadasdasdasdasdasdsa"
        android:textColor="#ffffff"
        android:paddingTop="11dp"
        android:paddingBottom="12dp"
        android:paddingRight="11dp"
        android:paddingLeft="5dp"
        android:textSize="15sp"
        android:layout_toRightOf="@+id/img"
        android:layout_centerVertical="true"
        />
</RelativeLayout>

本文地址:https://blog.csdn.net/C_biubiubiu/article/details/110660819

《Android自定义Toast样式(附工具类).doc》

下载本文的Word格式文档,以方便收藏与打印。