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();
            
        );
    

效果:

       

       

       

       

       

附kotlin代码

MainActivity.kt

package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() 
    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // kotlin中可以不用findViewById
        btn1.setOnClickListener
            Toast.makeText(this,"hh",Toast.LENGTH_SHORT).show() // 将"hh"替换成你要显示的内容
        

    

不用调用findViewById()直接使用控件ID名的方法:Kotlin中替代findViewById的方式

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

Android开发之Toast

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

toast组件小结

Android开发之《实现类似Toast可以自动消失的提示栏Tip》

Flutter Widgets 之 SnackBar

Vue 封装Toast消息提示