`
zhoujianghai
  • 浏览: 439911 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Toast的用法

阅读更多

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用法

    【标题】:“你可能不知道的Toast用法” 在Android应用开发中,`Toast`是一种非常常见且实用的组件,用于向用户展示短暂的信息提示。它不会阻塞用户的操作,但能在短时间内提供必要的反馈。虽然大部分开发者对基本...

    Toast用法详解(各种自定义Toast)实例

    本文将深入探讨`Toast`的用法,包括基本使用和自定义`Toast`的实例。 ### 1. 基本用法 `Toast`的基本使用非常简单,通常涉及`makeText()`方法。下面是一个简单的例子: ```java Toast.makeText(context, "Hello, ...

    Toast的基本使用代码

    接下来,使用`Toast.makeText()`方法创建`Toast`对象。这个方法需要三个参数:`Context`、要显示的文本以及`Toast`的持续时间。持续时间可以是`Toast.LENGTH_SHORT`(默认,约2秒)或`Toast.LENGTH_LONG`(约3.5秒)...

    Android Toast各种使用方法及DEMO

    本文将详细介绍`Toast`的各种使用方法及其DEMO示例。 1. **创建和显示基本的`Toast`** 要创建一个`Toast`,首先需要通过`Toast.makeText()`方法初始化`Toast`对象,然后调用`show()`方法将其显示出来。基本语法...

    Android_Toast用法.docx

    这是最基础的`Toast`使用方式,只需要调用`Toast.makeText()`方法,传入上下文、要显示的文本以及显示时长(`LENGTH_SHORT`或`LENGTH_LONG`),然后调用`show()`即可显示`Toast`。 ```java Toast.makeText...

    安桌toast用法小例

    本教程将针对Android `Toast`的使用进行详细讲解,非常适合初学者入门,即便是有经验的开发者,温故而知新也是必要的。 首先,我们来了解如何创建一个基本的`Toast`。在Android中,`Toast`类提供了创建和显示消息的...

    Android Notification Toast用法演示范例.rar

    Android Notification消息框 Toast弹出框用法演示范例,本例中关于 Toast弹出框的演示,演示了适时的 Toast和长时间的 Toast,关于Notification的定义,则演示了高级Notification的用法,自定义4种Notification的...

    JQuery信息提示框插件 jquery.toast.js 的使用

    **jQuery Toast 插件介绍** `jQuery.toast.js` 是一个基于 jQuery 的轻量级信息提示框插件,它提供了一种优雅的方式,用于在网页...通过深入理解其使用方法和配置选项,你可以轻松地在网页上实现丰富多样的提示功能。

    Android Toast用法代码实例

    摘要:Java源码,Android,Toast,Android源码 Android Toast用法代码实例,建立属于你自己的Toast. Toast在Android系统中用于向用户显示一些帮助/提示,本源码是一个较基本的Toast用法实例,还望通过本例能加深您对...

    toast几种用法

    本文将详细介绍`Toast`的几种常见用法,包括如何创建基本的`Toast`、自定义`Toast`的位置以及创建带有图片的`Toast`。 ### 基本的`Toast`使用 在Android中,`Toast`类提供了简单的API来创建和显示`Toast`。首先,...

    Toast的各种用法

    本篇文章将深入探讨`Toast`的各种用法,包括基本用法、自定义样式以及一些实用技巧。 ### 1. `Toast`的基本用法 在Android中,`Toast`类提供了一种简单的方法来显示消息。创建`Toast`的基本步骤如下: ```java //...

    Android Toast的用法总结(五种用法)

    本篇文章主要介绍了Android Toast的用法总结(五种用法),android toast几种使用方法 toast经常会用到,今天做个总结,特别是自定义toast的布局,值得一看。

    android Toast对象的使用 自定义Toast

    `Toast`对象的使用主要包括基本用法和自定义实现,下面将详细讲解这两个方面。 ### 基本用法 1. **创建Toast对象**:首先,你需要通过`Context`的`makeText()`方法来创建一个`Toast`对象,传入上下文、消息文本和...

    自定义Toast,设置Toast显示位置,自定义Toast的复杂布局

    在`CustomToast`类的`show()`方法中,我们可以通过`setGravity()`方法来设置`Toast`的显示位置。`Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL`表示在屏幕底部居中显示,`0`和`100`分别代表水平和垂直偏移量,可以...

    Toast的几行代码

    接下来,我们将会深入探讨`Toast`的使用方法,以及如何自定义`Toast`以满足更个性化的展示需求。 1. **基础使用** 创建一个基本的`Toast`非常简单,只需要以下几步: ```java Toast.makeText(context, "这是一条...

    自定义Toast及解决重复出现Toast的问题

    2. **创建自定义Toast类**:创建一个新的Java类,继承自`Toast`,并覆盖`makeText()`方法,以使用我们刚才创建的布局。 ```java public class CustomToast extends Toast { public CustomToast(Context context) { ...

    vue.js中toast用法及使用toast弹框的实例代码

    之后,在Vue组件的methods选项中定义一个方法,比如叫做showToast,然后在该方法中调用this.$toast,传入一个对象作为参数,该对象中包含了要显示的消息内容。当该方法被触发时,就会显示Toast弹框。 在实例代码中...

    Android 演示简单toast和带图片toast的实现方法.rar

    Android 演示简单toast和带图片toast的实现方法,这些toast在平时的Android应用开发中使用频繁,本源码演示了两种最实用toast的用法,一种是不带图片,另一种是带图片:  // 简单的toast,不带图片的实现方法:  ...

    Android Toast 自定义背景、图片 随心使用

    首先,我们要了解`Toast`的基本用法。在Android中,我们可以通过`Toast.makeText()`方法来创建一个`Toast`实例,并设置显示的文本: ```java Toast.makeText(context, "Hello, World!", Toast.LENGTH_SHORT).show()...

Global site tag (gtag.js) - Google Analytics