Android开发基础之消息提示组件Toast

Posted 舒泱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发基础之消息提示组件Toast相关的知识,希望对你有一定的参考价值。

       

一、设置显示的内容

Toast.makeText(MainActivity.this,"显示的内容",Toast.LENGTH_SHORT).show();
  • 第一个参数:当前的上下文环境。可用getApplicationContext()或this等。

  • 第二个参数:要显示的字符串。

  • 第三个参数:显示的时间长短。有LENGTH_LONG和LENGTH_SHORT。

程序示例:

在activity_main.xml里添加一个按钮:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <Button
        android:layout_width="350dp"
        android:layout_height="100dp"
        android:id="@+id/btn"
        android:background="@color/pink_100"
        android:text="点击按钮弹出提示消息"
        android:textSize="30sp">
    </Button>
</LinearLayout>

       

在MainActivity.java里监听按钮的点击事件,只要按钮被点击,就弹出提示消息框:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button btn;

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

        btn=findViewById(R.id.btn);  // 获取控件id
        // 监听按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 弹出Toast
                Toast.makeText(MainActivity.this,"hhh",Toast.LENGTH_SHORT).show();
            }
        });

    }
}

       
效果:

       

       

       

       

       

二、设置显示的位置

toast1.setGravity(Gravity.CENTER,0,0);

程序示例:
activity_main.xml不变,仅修改MainActivity.java里的一句代码:

public class MainActivity extends AppCompatActivity {
    private Button btn;

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

        btn=findViewById(R.id.btn);  // 获取控件id
        // 监听按钮点击事件
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取一个Toast
                Toast toast1 = Toast.makeText(getApplicationContext(),"hhh我居中显示了",Toast.LENGTH_SHORT);
                // 居中显示
                toast1.setGravity(Gravity.CENTER,0,0);
                toast1.show();
            }
        });
    }
}

但是这个方法在API30或者更高版本的设备上不再适用:
在这里插入图片描述

       

       

       

       

       

三、自定义显示的内容(例如显示一个图片)

首先,随便准备一个你要显示的图片,放在drawable-XXX目录下:
在这里插入图片描述
然后新建一个布局文件:
在这里插入图片描述
随便取个名字:
在这里插入图片描述
编辑这个布局文件,这个文件的布局就是Toast要弹出来的小窗的内容:

<?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="200dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="#99DDFFFF">
        <ImageView
            android:layout_width="200dp"
            android:layout_height="150dp"
            android:src="@drawable/go1">
        </ImageView>
        <TextView
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:text="自定义Toast"
            android:textSize="30sp"
            android:gravity="center">
        </TextView>
    </LinearLayout>
</LinearLayout>

activity_main.xml不变,修改MainActivity.java里的代码:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button btn7;

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

        btn7=findViewById(R.id.btn7);  // 获取控件id
        // 监听按钮点击事件
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取一个Toast
                Toast toast1 = new Toast(getApplicationContext());
                // 给Toast设置一个视图
                LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
                View view1=inflater.inflate(R.layout.layout_toast,null);
                toast1.setView(view1);
                toast1.show();
            }
        });
    }
}

效果:

以上是关于Android开发基础之消息提示组件Toast的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之Toast

Android学习笔记(26):Toast提示信息框

toast组件小结

Android消息的提示,Toast吐司方式

CVE-2020-0014 Toast组件点击事件截获漏洞

CVE-2020-0014 Toast组件点击事件截获漏洞