Android---自定义Toast

本文介绍了如何在Android中自定义Toast,包括使用makeText()方法创建标准Toast,通过setGravity改变显示位置,以及利用自定义布局实现更复杂的界面展示。推荐使用自定义布局以达到更简洁的代码和直观的布局设计。

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

1、Toast类包含一个静态(static)方法makeText(),它可以创建一个标准的Toast显示窗口。一旦创建了一个Toast,就可以调用它的show()方法显示它。

makeText()方法需要要三个参数:

1》应用程序上下文;

2》要显示的文本消息;

3》该Toast的显示时长(Toast.LENGTH_LONG /  Toast.LENGTH_SHORT);

代码如下:

        Toast toast = Toast.makeText(MainActivity.this, "Hello World, this is a toast", Toast.LENGTH_LONG);
        toast.show();
效果如下:


2、自定义Toast

2.1、使用setGravity方法改变Toast的显示位置

        Toast toast = Toast.makeText(MainActivity.this, "Hello World, this is a toast", Toast.LENGTH_LONG);
        //底部
        toast.setGravity(Gravity.BOTTOM, 0, 0);
        toast.show();

效果如下:


2.2、自定义View来呈现一个更加复杂或者视觉效果更好的界面

//
        Toast toast = Toast.makeText(MainActivity.this, "Hello World, this is a toast", Toast.LENGTH_LONG);
        //顶部
        toast.setGravity(Gravity.TOP, 0, 0);

        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);

        ImageView iv = new ImageView(this);
        iv.setImageResource(R.drawable.main_logo);

        TextView tv = new TextView(this);
        tv.setText("这是用代码自定义的Toast...");

        int height = LinearLayout.LayoutParams.WRAP_CONTENT;
        int width = LinearLayout.LayoutParams.MATCH_PARENT;

        ll.addView(iv, height, width);//将ImageView添加到LinearLayout
        ll.addView(tv, height, width);//将TextView添加到LinearLayout

        toast.setView(ll);//将LinearLayout设置为toast的显示内容


        toast.show();


效果如下:


2.3、自定义布局来呈现一个更加复杂或者视觉效果更好的界面(建议使用该方法,代码更加简洁,布局也更加直观)

1》首先定义一个Toast的布局:toast_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/main_logo"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是用布局文件自定义的Toast"/>

</LinearLayout>


2》在代码中将该布局添加到Toast中显示

//
        Toast toast = Toast.makeText(MainActivity.this, "Hello World, this is a toast", Toast.LENGTH_LONG);
        //顶部
        toast.setGravity(Gravity.TOP, 0, 0);


        //获取LayoutInflater对象,该对象能把XML文件转换为与之一致的View对象
        LayoutInflater inflater = getLayoutInflater();


        //根据指定的布局文件创建一个具有层级关系的View对象
        //第二个参数为View对象的根节点,即LinearLayout的ID
        View toast_layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));


        //让Toast显示为我们自定义的样式
        toast.setView(toast_layout);
        toast.show();

效果同2.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值