安卓 toast

Posted yh_android_blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓 toast相关的知识,希望对你有一定的参考价值。

概述

一个 toast 是在屏幕上弹出一条信息,它的大小总是包裹着需要显示的内容,并且当前的 Activity 依然是可见并且可互动的。toast会自动消失,并且不接受任何互动事件。因为 toast 可以在后台的 Service 中创建,所以即使这个应用程序没有显示在屏幕上,仍然可以弹出 toast.

toast 最好用来显示简要的信息,比如断定用户正在注意屏幕时,弹出"File saved". toast 不能接受任何用户互动事件,如果需要用户响应并采取操作,考虑使用 状态栏通知 来替代.。

基本使用

首先,用 makeText() 方法实例化一个 Toast 对象。该方法需要三个参数:当前应用的 Context ,文本消息,和toast的持续时间。该方法返回一个实例化过的Toast对象。你可以用 show() 方法将该toast通知显示出来:
   
    
      Toast.makeText(ToastActivity.this, "默认提示", Toast.LENGTH_SHORT).show();
    
   

指定显示位置

默认的,我们的toast提示是显示在底部正中间。我们还可以自己指定位置。通过 setGravity
   
    
     toast.setGravity(Gravity.TOP | Gravity.LEFT, 0, 0);
    
   

追加图片

默认toast只显示一个文本框,我们还可以追加图片或其他view进去
   
    
       LinearLayout linearLayout = (LinearLayout) toast.getView();
    
    
                     ImageView imageView = new ImageView(ToastActivity.this);
    
    
                     imageView.setImageResource(R.mipmap.ic_launcher);
    
    
                     linearLayout.addView(imageView);
    
   
首先,我们通过getView获得该toast的布局。之后,我们向布局中添加我们的布局,这里,我们添加一个简单的视图。

自定义布局

通常情况下,默认的布局很难满足我们的需求,在toast中也可以使用自定义布局。
   
    
        View view1 = LayoutInflater.from(ToastActivity.this).inflate(R.layout.layout_toast, null);
    
    
                     toast.setView(view1);
    
   
使用inflate从xml文件中加载我们定义的布局,然后应用到toast上,xml布局如下:
   
    
     <?xml version="1.0" encoding="utf-8"?>
    
    
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
    
         android:orientation="vertical" android:layout_width="match_parent"
    
    
         android:layout_height="match_parent">
    
    
      
    
    
         <ImageView
    
    
             android:src="@drawable/qq_background"
    
    
             android:layout_width="wrap_content"
    
    
             android:layout_height="wrap_content"
    
    
             android:id="@+id/imageView"
    
    
             android:layout_gravity="center_horizontal" />
    
    
      
    
    
         <TextView
    
    
             android:layout_width="wrap_content"
    
    
             android:layout_height="wrap_content"
    
    
             android:text="show_text"
    
    
             android:id="@+id/textView"
    
    
             android:layout_gravity="center_horizontal" />
    
    
     </LinearLayout>
    
   

在线程中使用

根据安卓编程规范,我们不能再会UI线程中更改UI界面。toast是一个ui,因此,我们只有使用 runOnUiThread来显示我们的信息
   
    
      runOnUiThread(new Runnable() 
    
    
                                 @Override
    
    
                                 public void run() 
    
    
                                     Toast toast = Toast.makeText(ToastActivity.this, "线程中提示", Toast.LENGTH_SHORT);
    
    
                                     toast.show();
    
    
                                 
    
    
                             );
    
   


















以上是关于安卓 toast的主要内容,如果未能解决你的问题,请参考以下文章

安卓---Toast工具类,有点懒

安卓Toast实现

安卓开发问题,页面上只有一个按钮,我要点击按钮显示一个toast,但是点击后没有出现!我在toas

RN 调用安卓的原生方法(实现Toast效果)

安卓高级控件

一款精美的Toast第三方库的简单使用