Android Toast 默认和自定义使用

博客介绍了Android中Toast的基本使用,包括默认和自定义两种方式。默认Toast通过上下文、显示文本和时间参数快速显示。自定义Toast涉及LayoutInflater的使用,用于动态加载界面,并通过inflate方法载入XML布局文件,实现更个性化的提示效果。

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

Toast是一种简易的消息提示框,和Dialog不一样的是,Toast永远不会获得焦点,无法被点击。

Toast的设计思想就是尽可能不太引人注意,同时还能向用户展示信息,希望他们看到。

Toast显示的时间有限,只分为long和short,它会根据用户设置的显示时间后自动消失。

1.默认Toast

myToast1("这是默认的Toast");
public void myToast1(String str) {
        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
}

参数依次是显示Toast的上下文、显示的字符串、显示时间、最后show出来即可。

2.自定义Tosat

先大致了解一下LayoutInflater

作用: 
1、对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 
2、对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法来获得其中的界面元素. 

方法: 
 1、Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Activity基类, 然后在onCreate里面使用setContentView方法来载入一个在xml里定义好的界面. 
 2、其实在Activity里面就使用了LayoutInflater来载入界面, 通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflater inflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml, 

区别:
1、 LayoutInflater.inflate是加载一个布局文件。

2、 findViewById则是从布局文件中查找一个控件;

myToast2("这是PM自定义的Toast");
public void myToast2(String str) {
        LayoutInflater inflater = getLayoutInflater();
        //作用就是将一个xml定义的布局文件实例化为view控件对象;
        //1.reSource:View的layout的ID
        //2.root:需要附加到resource资源文件的根控件,inflate()会返回一个View对象,
        // 如果第三个参数attachToRoot为true,就将这个root作为根对象返回,
        // 否则仅仅将这个root对象的LayoutParams属性附加到resource对象的根布局对象上,也就是布局文件resource的最外层的View上。
        // 如果root为null则会忽略view根对象的LayoutParams属性(注意)。
        //3.attachToRoot:是否将root附加到布局文件的根视图上
        View view = inflater.inflate(
                R.layout.demo11_toast,
                (ViewGroup) findViewById(R.id.R_toast),
                false
        );
        //设置ImageView
        ImageView img_toast = (ImageView) view.findViewById(R.id.img_toast);
        img_toast.setImageResource(R.mipmap.ic_launcher);
        //设置TextView
        TextView tv_msg = (TextView) view.findViewById(R.id.tv_toast);
        tv_msg.setText(str);
        //上下文
        Toast toast = new Toast(getApplicationContext());
        //设置显示位置,
        toast.setGravity(Gravity.CENTER, 0, 0);
        //设置时间
        toast.setDuration(Toast.LENGTH_LONG);
        //设置View
        toast.setView(view);
        //显示Tosat
        toast.show();
 }

demo11_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/R_toast"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/demo11_bg_toast">

    <ImageView
        android:id="@+id/img_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv_toast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/img_toast"
        android:textSize="14sp" />

</RelativeLayout>

demo11_bg_toast.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--设置透明背景色-->
    <solid android:color="#3989cd" />
    <!--设置黑色边框-->
    <stroke
        android:width="1px"
        android:color="#FFFFFF" />
    <!--设置四个圆角半径-->
    <corners
        android:bottomLeftRadius="50px"
        android:bottomRightRadius="50px"
        android:topLeftRadius="50px"
        android:topRightRadius="50px" />
    <!--设置边距,让空间大一点-->
    <padding
        android:bottom="4dp"
        android:left="7dp"
        android:right="7dp"
        android:top="4dp" />
</shape>

好了,基本的Toast就这么多,有错误请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值