自定义Toast比较简单,只需要用Java代码编写布局组件,然后调用Toast的setView(View view)方法将自定义的布局组件设置进去即可

效果图:

  1. package com.demo; 
  2.  
  3. import android.app.Activity; 
  4. import android.os.Bundle; 
  5. import android.view.View; 
  6. import android.view.View.OnClickListener; 
  7. import android.widget.Button; 
  8. import android.widget.ImageButton; 
  9. import android.widget.ImageView; 
  10. import android.widget.LinearLayout; 
  11. import android.widget.TextView; 
  12. import android.widget.Toast; 
  13.  
  14. public class ToastTest extends Activity { 
  15.      
  16.     private Button show; 
  17.     private TextView textView; 
  18.     private ImageView imageView; 
  19.     private Toast toast; 
  20.     private LinearLayout lnl;  //用于自定义Toast的布局 
  21.     /** Called when the activity is first created. */ 
  22.     @Override 
  23.     public void onCreate(Bundle savedInstanceState) { 
  24.         super.onCreate(savedInstanceState); 
  25.         setContentView(R.layout.main); 
  26.          
  27.         //相关组件的初始化 
  28.         show=(Button) findViewById(R.id.show); 
  29.         toast=new Toast(ToastTest.this); 
  30.         lnl=new LinearLayout(ToastTest.this);    
  31.         imageView=new ImageButton(ToastTest.this); 
  32.         textView=new TextView(ToastTest.this); 
  33.          
  34.         imageView.setImageResource(R.drawable.icon); 
  35.         textView.setText("Toast with picture and text"); 
  36.          
  37.         //lnl中包含了一个ImageView和一个TextView 
  38.         lnl.addView(imageView);  
  39.         lnl.addView(textView); 
  40.         toast.setView(lnl); 
  41.          
  42.         show.setOnClickListener(new OnClickListener() { 
  43.              
  44.             @Override 
  45.             public void onClick(View v) { 
  46.                 // TODO Auto-generated method stub 
  47.                     //设置toast以lnl这个布局来显示内容 
  48.                 toast.show(); 
  49.                 toast.setDuration(300); 
  50.             } 
  51.         }); 
  52.          
  53.  
  54.  
  55.     } 


  56.