【Android-Activity】消息提示组件Toast的常用方式(改变位置的toast、带图片的toast)

本文详细介绍了Android中Toast的三种使用方式:默认展示、自定义位置以及添加图片。通过设置xOffset和yOffset可以改变Toast的位置。对于带图片的Toast,需要创建自定义布局并将其添加到Toast中。此外,为了解决多次点击导致的多个Toast叠加问题,文章提出了创建工具类来包装Toast,确保每次点击只显示最新的Toast。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将介绍toast的三种使用方式及如何修改toast显示时长

  1. 默认的toast
  2. 改变位置的toast
  3. 带图片的toast

运行效果:
在这里插入图片描述

1、默认的toast
  Toast.makeText(EasyDemoActivity.this,"我是默认的toast",Toast.LENGTH_SHORT).show();
2、改变位置的toast

改变位置的toast设置步骤

  1. 声明一个toast
  2. toast设置位置,xOffetset,yOffetset:偏移量
  3. 将toast显示
  //改变位置的toast设置步骤
                //1、声明一个toast
                //2、toast设置位置,xOffetset,yOffetset:偏移量
                //3、将toast显示
                Toast toast=Toast.makeText(EasyDemoActivity.this,"我是改变位置的toast",Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER,0,0);
                toast.show();
3、带图片的toast

实现思路:将layout放于inflate中,对layout中的控件设置内容(图片/文字),将inflate设置到toast中

需要新建一个布局用于设置我们自定义的toast:
注意!!此处item布局中对根布局设置的宽高是不起效果的,一定要在根布局中嵌套一个布局!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/iv_cover"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            android:src="@mipmap/picture" />

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:textSize="20sp" />
    </LinearLayout>

</LinearLayout>
    Toast toastImage=new Toast(this);
    LayoutInflater inflater=LayoutInflater.from(this);
    View inflateView = inflater.inflate(R.layout.layout_toast, null);
                
    ImageView imageView=inflateView.findViewById(R.id.iv_cover);
    TextView textView=inflateView.findViewById(R.id.tv_title);
                
    imageView.setImageResource(R.mipmap.picture);
    textView.setText("我是带图片的toast");
                
    toastImage.setView(inflateView);
    toastImage.show();
toast多次点击设置显示时长

一般我们在使用toast的时候会出现该问题:多次点击toast会一直跳出多个toast,显示的时间就会很长,而我们预期的效果确实多次点击只跳出最后一个toast!

在这里插入图片描述

解决方案:
创建一个工具类将toast进行包装

public class ToastUtils {
    public static Toast mToast;
    public static void showMsg(Context context, String msg) {
        if (mToast == null) {
            mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
        } else {
            mToast.setText(msg);
        }
        mToast.show();
    }
}

再使用该方法即可达到我们要的效果:

ToastUtils.showMsg(EasyDemoActivity.this,"我是默认的toast");

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值