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);
}
}
详细解决方案
Android Toast 长期展示解决方案
热度:207 发布时间:2016-05-01 15:49:03.0
相关解决方案
- xml/xslt 变量自增。解决方案
- DB2 调用java自定义方法报错,请大牛帮忙~解决方案
- 关于request.getParameterValues()解决方案
- 一个JSP页面,在NETBEANS里报错!解决方案
- WEB环境javamail取不到pop3邮件,解决方案
- 急来者有分,晚了就没了!解决方案
- disable在IE8中可以接收焦点了?解决方案
- 求网页采集器的正则表达式。解决方案
- 关于FckEdit。解决方案
- 在Struts2 如果有多个拦截器栈顺序写错会有什么不同?解决方案
- servlet+jquery1.4.2(ajax error?)解决方案
- 关于el 《c:if》。解决方案
- jsp、taglib、velocity、freemarker等都过时了吗?解决方案
- 有开发过CA认证的朋友,帮个忙!解决方案
- com.microsoft.sqlserver.jdbc.SQLServerException: 列名 n_id 无效。解决方案
- java 缓冲区读写操作,求解?解决方案
- EXTJS中treepanel树内部机制?解决方案
- 一个数学题,求个算法。解决方案
- java 大文件上传?解决方案
- 从JSP中得到访问者的真实IP(很急)!解决方案
- 高分求解!解决方案
- java可以跟PHP对接吗?解决方案
- 有什么办法在JSP页面在不使用<%%>情况下 使用数学函数Math.floor()解决方案
- 在JSP页面调用JavaBean,出错!初学!求指导!解决方案
- 简单的更改记录的语句?解决方案
- JS方法内取的值是false,给方法传递的值却是正确的,请高手指教。解决方案
- 求教各位大神,初学JSP看什么书比较好呢?新一点的。解决方案
- java调用so,解决方案
- MyEclipse怎样运行applet程序?解决方案
- JPA到底是神马?解决方案