`
kevin2562
  • 浏览: 116773 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android Toast 长期显示解决方案

阅读更多
Android Toast 长期显示解决方案

Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,
Toast是没有焦点的,而且Toast显示的时间有限, 过一定的时间就会自动消失。
下面用一个实例来看看如何使用Toast。
首先建立一个ToastExample的项目,放置3个按钮,分别为 Text Only,Icon Only,Text and Icon。

Text Only
Toast.makeText(getApplicationContext(), "Text toast test!", Toast.LENGTH_LONG).show();

Icon Only
      Toast toast = new Toast(getApplicationContext());
        ImageView view = new ImageView(getApplicationContext());
        view.setImageResource(R.drawable.ic_dialog_alert);
        toast.setView(view);
        toast.show();

Text and Icon
      Toast toast = Toast.makeText(getApplicationContext(), "Text and Icon test!", Toast.LENGTH_LONG);
        View textView = toast.getView();
        LinearLayout lay = new LinearLayout(getApplicationContext());
        lay.setOrientation(LinearLayout.HORIZONTAL);
        ImageView view = new ImageView(getApplicationContext());
        view.setImageResource(R.drawable.ic_dialog_alert);
        lay.addView(view);
        lay.addView(textView);
        toast.setView(lay);
        toast.show();


自己写了一个简化类,把Toast封装在里面,可以满足基本应用。

  public class MyToast {

  private static final String TAG = "MyToast";

  public static final int LENGTH_MAX = -1; //show until hide() function invoked

  boolean mCanceled = true;

  Handler mHandler;

  Context mContext;

  Toast mToast;

  public MyToast(Context context) {

  this(context,new Handler());

  }

  public MyToast(Context context,Handler h) {

  mContext = context;

  mHandler = h;

  mToast = Toast.makeText(mContext,"",Toast.LENGTH_SHORT);

  mToast.setGravity(Gravity.BOTTOM, 0, 0);

  }

  public void show(int resId,int duration) {

  mToast.setText(resId);

  if(duration != LENGTH_MAX) {

  mToast.setDuration(duration);

  mToast.show();

  } else if(mCanceled) {

  mToast.setDuration(Toast.LENGTH_LONG);

  mCanceled = false;

  showUntilCancel();

  }

  }

  public void show(String text,int duration) {

  mToast.setText(text);

  if(duration != LENGTH_MAX) {

  mToast.setDuration(duration);

  mToast.show();

  } else {

  if(mCanceled) {

  mToast.setDuration(Toast.LENGTH_LONG);

  mCanceled = false;

  showUntilCancel();

  }

  }

  }

  public void hide() {

  Log.d(TAG,"hide");

  mToast.cancel();

  mCanceled = true;

  }

  public boolean isShowing() {

  return !mCanceled;

  }

  private void showUntilCancel() {

  if(mCanceled)

  return;

  mToast.show();

  mHandler.postDelayed(new Runnable() {

  public void run() {

  showUntilCancel();

  }

  },3000);

  }

  }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics