Android——自定义Toast(含项目源码)

Toast 类通常用于显示一些快速提示信息,应用范围非常广泛。下面将对 Toast 类进行详细介绍。应用 Toast 类
在屏幕中显示的消息提示框具有如下几个特点:

  • 没有任何控制按钮。
  • 不会获得焦点。
  • 经过一段时间后会自动消失。

使用 Toast 类来显示消息提示框比较简单,一般一条语句就可以实现:

Toast.makeText(getApplicationContext(),"提示内容",Toast.LENGTH_SHORT).show();

但是随着我们学习的深入,系统自带的样式已经满足不了我们的需求了,这时我们就需要直接来设计提示框的样式。
下面将简单介绍一下Toast自定义样式如何实现的。
实现自定义Toast有两步较关键。
第一步:设计自定义布局layout
第二步:对Toast类的以下参数进行设置。

Toast 类的常用方法
这里贴出一个简单的代码:

toast_layout.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:id="@+id/toast_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/img_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/icon_tip" />

    <TextView
        android:id="@+id/tv_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是一个自定义的Toast"
        android:textSize="30sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/img_toast" />
</androidx.constraintlayout.widget.ConstraintLayout>

ToastUtils.java

package com.example.mydemo;

import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;

public class ToastUtils{
    private static Toast toast = null;
    
    public static void showToast(@NonNull Context context,
                                 @NonNull LayoutInflater inflater,
                                 @NonNull int layout) {
        if (toast == null){
            //填充自定义视图
            View vToast = inflater.inflate(layout,null);

            toast = new Toast(context);
            //设置自定义视图
            toast.setView(vToast);
            //设置持续时间(Toast.LENGTH_SHORT或者Toast.LENGTH_LONG)
            toast.setDuration(Toast.LENGTH_SHORT);
            //设置位置
            toast.setGravity(Gravity.CENTER,0,0);
        }
        //显示toast
        toast.show();
    }
}

这样我们就可以愉快的使用自己设置的Toast提示样式了。

ToastCustomActivity.java

package com.example.mydemo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;

public class ToastCustomActivity extends AppCompatActivity {
    private int num = 0;

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

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                num++;
               ToastUtils.showToast(getApplicationContext(),getLayoutInflater(),R.layout.toast_layout,
                       "新的提示内容"+num,R.drawable.icon_tip);
            }
        });
    }

}

链接:百度网盘下载 提取码:43v6

发布了14 篇原创文章 · 获赞 4 · 访问量 5866

猜你喜欢

转载自blog.csdn.net/qq_43567345/article/details/104326704