Toast是android中用来显示快速显示短信息的一种机制,toast没有焦点,显示的时间是有限制的,过一段时间后会自动消失,不过自己可以控制时间显示的长短。Toast的构建方式有两种,第一种是直接调用构造函数:Toast toast = new Toast(context);
第二种是通过调用Toast类的一个静态方法:Toast toast = Toast.makeText(context, text, duration);
这两种方式是有差别的,看看Toast的源码就明白了,Toast类的构造函数如下:
public Toast(Context context) {
mContext = context;
mTN = new TN(context);
mY = context.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.toast_y_offset);
}
Toast类的静态方法makeText(context, text, duration)源码如下:
public static Toast makeText(Context context, CharSequence text, int duration) {
Toast result = new Toast(context);
LayoutInflater inflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
tv.setText(text);
result.mNextView = v;
result.mDuration = duration;
return result;
}
Toast类中有个属性mNextView很重要,它是一个View,指定Toast显示的view,当你使用第一种方法得到Toast时,一定要调用Toast的setView(View v)方法为Toast指定一个view,使用第二种方式则不需要显示调用setView(View v),看看上面的这句代码就明白了,result.mNextView = v。
为什么使用第一种方式得到Toast时需要显示指定View呢,看看Toast的show()和setText(CharSequence s):
/**
* Show the view for the specified duration.
*/
public void show() {
if (mNextView == null) {
throw new RuntimeException("setView must have been called");
}
INotificationManager service = getService();
String pkg = mContext.getPackageName();
TN tn = mTN;
try {
service.enqueueToast(pkg, tn, mDuration);
} catch (RemoteException e) {
// Empty
}
}
/**
* Update the text in a Toast that was previously created using one of the makeText() methods.
* @param s The new text for the Toast.
*/
public void setText(CharSequence s) {
if (mNextView == null) {
throw new RuntimeException("This Toast was not created with Toast.makeText()");
}
TextView tv = (TextView) mNextView.findViewById(com.android.internal.R.id.message);
if (tv == null) {
throw new RuntimeException("This Toast was not created with Toast.makeText()");
}
tv.setText(s);
}
如果不指定view,则mNextView的值为null。就会抛出异常。另外使用第一种方式时,就算你为Toast设置好了View也不能这样调用:toast.setText(s);
会抛出This Toast was not created with Toast.makeText()异常。解决的办法是定义一个TextView,然后为TextView赋值,再加到XXLayout中,
使用setView(XXLayout)把XXLayout设置成Toast的View。
下面分别采用两种方式创建Toast
/**
*自定义美化Toast,使用图片作背景
*/
private void showToast() {
Toast t = new Toast(this);
t.setDuration(Toast.LENGTH_SHORT);
LinearLayout layout = new LinearLayout(this);
layout.setBackgroundResource(R.drawable.toast_bg);
TextView textView = new TextView(this);
textView.setText("javaeye:您好!");
textView.setTextSize(14);
textView.setTextColor(Color.WHITE);
layout.addView(textView);
t.setView(layout);
t.setGravity(Gravity.TOP, 100+20, 200 + 20);
t.show();
}
/**
* 默认的Toast效果
*/
private void showToast2() {
Toast t = Toast.makeText(this, "csdn:您好!", Toast.LENGTH_SHORT);
t.setGravity(Gravity.TOP, 100+20, 200 + 20);
t.show();
}
分享到:
相关推荐
【标题】:“你可能不知道的Toast用法” 在Android应用开发中,`Toast`是一种非常常见且实用的组件,用于向用户展示短暂的信息提示。它不会阻塞用户的操作,但能在短时间内提供必要的反馈。虽然大部分开发者对基本...
本文将深入探讨`Toast`的用法,包括基本使用和自定义`Toast`的实例。 ### 1. 基本用法 `Toast`的基本使用非常简单,通常涉及`makeText()`方法。下面是一个简单的例子: ```java Toast.makeText(context, "Hello, ...
接下来,使用`Toast.makeText()`方法创建`Toast`对象。这个方法需要三个参数:`Context`、要显示的文本以及`Toast`的持续时间。持续时间可以是`Toast.LENGTH_SHORT`(默认,约2秒)或`Toast.LENGTH_LONG`(约3.5秒)...
本文将详细介绍`Toast`的各种使用方法及其DEMO示例。 1. **创建和显示基本的`Toast`** 要创建一个`Toast`,首先需要通过`Toast.makeText()`方法初始化`Toast`对象,然后调用`show()`方法将其显示出来。基本语法...
这是最基础的`Toast`使用方式,只需要调用`Toast.makeText()`方法,传入上下文、要显示的文本以及显示时长(`LENGTH_SHORT`或`LENGTH_LONG`),然后调用`show()`即可显示`Toast`。 ```java Toast.makeText...
本教程将针对Android `Toast`的使用进行详细讲解,非常适合初学者入门,即便是有经验的开发者,温故而知新也是必要的。 首先,我们来了解如何创建一个基本的`Toast`。在Android中,`Toast`类提供了创建和显示消息的...
Android Notification消息框 Toast弹出框用法演示范例,本例中关于 Toast弹出框的演示,演示了适时的 Toast和长时间的 Toast,关于Notification的定义,则演示了高级Notification的用法,自定义4种Notification的...
**jQuery Toast 插件介绍** `jQuery.toast.js` 是一个基于 jQuery 的轻量级信息提示框插件,它提供了一种优雅的方式,用于在网页...通过深入理解其使用方法和配置选项,你可以轻松地在网页上实现丰富多样的提示功能。
摘要:Java源码,Android,Toast,Android源码 Android Toast用法代码实例,建立属于你自己的Toast. Toast在Android系统中用于向用户显示一些帮助/提示,本源码是一个较基本的Toast用法实例,还望通过本例能加深您对...
本文将详细介绍`Toast`的几种常见用法,包括如何创建基本的`Toast`、自定义`Toast`的位置以及创建带有图片的`Toast`。 ### 基本的`Toast`使用 在Android中,`Toast`类提供了简单的API来创建和显示`Toast`。首先,...
本篇文章将深入探讨`Toast`的各种用法,包括基本用法、自定义样式以及一些实用技巧。 ### 1. `Toast`的基本用法 在Android中,`Toast`类提供了一种简单的方法来显示消息。创建`Toast`的基本步骤如下: ```java //...
本篇文章主要介绍了Android Toast的用法总结(五种用法),android toast几种使用方法 toast经常会用到,今天做个总结,特别是自定义toast的布局,值得一看。
`Toast`对象的使用主要包括基本用法和自定义实现,下面将详细讲解这两个方面。 ### 基本用法 1. **创建Toast对象**:首先,你需要通过`Context`的`makeText()`方法来创建一个`Toast`对象,传入上下文、消息文本和...
在`CustomToast`类的`show()`方法中,我们可以通过`setGravity()`方法来设置`Toast`的显示位置。`Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL`表示在屏幕底部居中显示,`0`和`100`分别代表水平和垂直偏移量,可以...
接下来,我们将会深入探讨`Toast`的使用方法,以及如何自定义`Toast`以满足更个性化的展示需求。 1. **基础使用** 创建一个基本的`Toast`非常简单,只需要以下几步: ```java Toast.makeText(context, "这是一条...
2. **创建自定义Toast类**:创建一个新的Java类,继承自`Toast`,并覆盖`makeText()`方法,以使用我们刚才创建的布局。 ```java public class CustomToast extends Toast { public CustomToast(Context context) { ...
之后,在Vue组件的methods选项中定义一个方法,比如叫做showToast,然后在该方法中调用this.$toast,传入一个对象作为参数,该对象中包含了要显示的消息内容。当该方法被触发时,就会显示Toast弹框。 在实例代码中...
Android 演示简单toast和带图片toast的实现方法,这些toast在平时的Android应用开发中使用频繁,本源码演示了两种最实用toast的用法,一种是不带图片,另一种是带图片: // 简单的toast,不带图片的实现方法: ...
首先,我们要了解`Toast`的基本用法。在Android中,我们可以通过`Toast.makeText()`方法来创建一个`Toast`实例,并设置显示的文本: ```java Toast.makeText(context, "Hello, World!", Toast.LENGTH_SHORT).show()...