安辉 2020-03-01
•参考资料
•简介
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
效果展示图:
实现方法:
首先,在 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