我们先看效果:
Toast简介:
Toast提供一个浮动的简单的小显示块,并且不影响任何其他操作,仅仅用于提示信息,并且会在超时后,自动消失。因为它的及时性已经自动消失的特性,不适合提示一些重要的信息,如果有重要的信息。
本文概括:
下文将讲解Toast的常规使用,以及特殊的属性、方法的使用,并且会说明如何使用Toast创建一个自定义的内容,并且最后会对以上讲解的内容给出代码示例。
Toast是为了给当前视图显示一个浮动的显示块,它永远不会获得焦点。一般用于提示一些不那么引人注目,但是又希望用户看见的消息,无需用户自己维护它的消失。
如果只是提示简单的信息,使用Android为Toast提供的两个静态的方法最为方便,它们会返回一个Toast对象,如果需要显示,只需要调用show()方法显示即可,下面是这两个方法的签名:
- static Toast makeText(Context context,int resId,int duration).
- static Toast makeText(Context context,CharSequence text,int duration)
上面两个方法,参数大致相同,一个上下文对象Context,一个显示的消息来源,一个设置持续时间。消息来源可以指定String资源,使用<string.../>标签在XML资源文件中定义,还可以指定一个字符串用于消息展示。最后的duration参数设置了Toast的持续时间,一般使用Toast自带的两个整形的常量:LENGTH_LONG(1,时间稍长)、LENGTH_SHORT(0,时间稍短),针对不同的使用场景,选择不用的持续时间。
Toast消息的默认显示位置在屏幕的中间偏下,Android也为开发者提供了方法设置Toast消息的位置,使用setGravity(int gravity, int xOffset, int yOffset)方法即可设置,它有三个参数,gravity设置一个重力方向,另外两个设置水平和垂直方向的偏移量。
演示中的实现代码:
调用函数:
package com.yzl.test2;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private Button button;
private EditText et_text;//变成全局变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载一个布局
setContentView(R.layout.activity_main);
//找到我们关心的控件
et_text = findViewById(R.id.editText2);
//找到按钮
button = findViewById(R.id.button);
//给按钮设置一个点击事件
button.setOnClickListener(new MyClickListener());//这叫做内部类
}
private class MyClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
String number = et_text.getText().toString().trim();//获取输入的值
if("".equals(number)){
//context 上下文
Toast.makeText(MainActivity.this, "输入值不能为空", Toast.LENGTH_LONG).show();
return;
}
}
}
}
界面布局:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--
match_parent:填充父窗体
fill_parent:同上,过时
wrap_content:表示和自身内容一样的长度。
-->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="请输入手机号码:"
android:textSize="40dp"
android:layout_marginTop="50dp"
android:textColor="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<EditText
android:layout_width="327dp"
android:layout_height="62dp"
android:inputType="phone"
android:ems="10"
android:id="@+id/editText2"
android:layout_row="1"
android:layout_column="0"/>
<Button
android:text="拨打"
android:textSize="30dp"
android:layout_width="150dp"
android:layout_height="72dp"
android:layout_row="2"
android:layout_column="0"
android:id="@+id/button"/>
</GridLayout>