Android Studio 之 Toast

安辉 2020-03-01

•参考资料

[1]:Android Studio 在活动中使用Toast

[2]:AndroidStudio自定义Toast及其用法

•简介

Toast 是 Android 系统提供的一种非常好的提醒方式;

在程序中可以使用它将一些短小的信息通知给用户;

这些信息会在一段时间内自动消失,并且不会占用任何屏幕空间

•Toast.makeText()函数原型

Toast.makeText(参数1,参数2,参数3); 

  • 参数1是 Context,也就是 Toast 要求的上下文,由于活动本身就是一个Context对象,因此直接传入XXActivity.this 即可,或者填入 getApplicationContext()
  • 参数2是 Toast 显示的文本内容
  • 参数3是 Toast 显示的时长,有两个内置常量可以选择 Toast.LENGTH_SHORT 和 Toast.LENGTH_LONG

•自定义 Toast

效果展示图:

  Android Studio 之 Toast

   实现方法:

  首先,在 layout 文件夹下自定义一个 .xml 文件,并命名为 toast.xml;

  在里面放入如下代码:

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

    <com.example.table.ImageViewPlus
        android:id="@+id/toast_iv_1"
        android:layout_centerHorizontal="true"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:scaleType="centerInside" />
    <TextView
        android:layout_below="@id/toast_iv_1"
        android:layout_centerHorizontal="true"
        android:id="@+id/toast_tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="26sp"
        android:textColor="#D32F2F"
        android:gravity="center"
        />

</RelativeLayout>

  其中的 <ImageViewPlus> 控件是我之前自定义的圆形 ImageView,详情见我这篇博客

  然后,自定义一个 Empty Activity 并命名为 DefineToastActivity,在其对应的 .xml 中添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DefineToastActivity"
    android:background="#1976D2">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cat" />
        <Button
            android:id="@+id/btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Dog" />
    </LinearLayout>
</RelativeLayout>

activity_define_toast.xml

  并在 DefineToastActivity.java 中设置点击事件的代码,并设置  Toast;

package com.example.table;

import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class DefineToastActivity extends AppCompatActivity {

    private Button Btn1;
    private Button Btn2;
    private Toast toast;
    private LayoutInflater inflater;
    private View view;
    private ImageView Iv;
    private TextView Tv;

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

        toast = new Toast(getApplicationContext());
        inflater = LayoutInflater.from(DefineToastActivity.this);
        view = inflater.inflate(R.layout.toast,null);
        Iv = view.findViewById(R.id.toast_iv_1);//找到 toast.xml 中 ImageView 控件的 id
        Tv = view.findViewById(R.id.toast_tv_1);//找到 toast.xml 中 TextView 控件的 id

        Btn1 = findViewById(R.id.btn_1);
        Btn2 = findViewById(R.id.btn_2);

        Btn1.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v){
                Iv.setImageResource(R.mipmap.cat);
                Tv.setText("喵喵喵");
                toast.setView(view);
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER,0,0);//将该toast居中显示
                toast.show();
            }
        });
        Btn2.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v){
                Iv.setImageResource(R.mipmap.dot);
                Tv.setText("汪汪汪");
                toast.setView(view);
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER,0,0);//将该toast居中显示
                toast.show();
            }
        });
    }
}

DefineToastActivity.java

相关推荐