Android之Toast的高级使用

举报
yechaoa 发表于 2022/05/30 22:57:03 2022/05/30
【摘要】 Toast作为提示,一般在用户进行某个操作之后出现,告诉用户结果或给用户提示,过一会就自动消失,不会阻碍用户操作。 1.一般使用 Toast.makeText(MainActivity.this, "testContent", Toast.LENGTH_SHORT).show(); 参数1:上下文。参数二:提示内容。...

Toast作为提示,一般在用户进行某个操作之后出现,告诉用户结果或给用户提示,过一会就自动消失,不会阻碍用户操作。


1.一般使用

Toast.makeText(MainActivity.this, "testContent", Toast.LENGTH_SHORT).show();
 

参数1:上下文。参数二:提示内容。参数三:显示时长。

Toast.LENGTH_SHORT是短时间内。Toast.LENGTH_LONG则与之相反。


2.高级使用(自定义布局,控制显示位置、文字大小,避免多次点击多次显示,主线程子线程)

a.封装


  
  1. public class MyUtil {
  2. /**
  3. * Toast
  4. */
  5. private static Toast toast;
  6. public static void showToast(final String msg) {
  7. //主线程
  8. if ("main".equals(Thread.currentThread().getName())) {
  9. creatToast(msg);
  10. } else {
  11. //子线程
  12. SpUtil.getActivity().runOnUiThread(new Runnable() {
  13. @Override
  14. public void run() {
  15. creatToast(msg);
  16. }
  17. });
  18. }
  19. }
  20. /**
  21. * 避免多次点击多次显示
  22. * @param msg
  23. */
  24. private static void creatToast(String msg) {
  25. if(toast==null){
  26. //创建
  27. toast = Toast.makeText(SpUtil.getActivity(), msg, Toast.LENGTH_SHORT);
  28. }else{
  29. //直接赋值
  30. toast.setText(msg);
  31. }
  32. //引用自定义布局
  33. LinearLayout linearLayout = (LinearLayout) toast.getView();
  34. TextView messageTextView = (TextView) linearLayout.getChildAt(0);
  35. //设置显示位置
  36. toast.setGravity(Gravity.CENTER, 0, 0);
  37. //设置文字大小
  38. messageTextView.setTextSize(15);
  39. toast.show();
  40. }
  41. /**
  42. * 取消,页面跳转之后,上一个页面的toast应该立马消失,此方法在Activity的onDestroy中调用即可
  43. */
  44. public static void cancelToast() {
  45. if(toast!=null){
  46. toast.cancel();
  47. }
  48. }
  49. }

在Activity中或者BaseActivity的onCreate中加上

SpUtil.setActivity(this);  
 

关于SpUtil的使用可查看上一篇文章:http://blog.csdn.net/yechaoa/article/details/60572384

两个util配合使用效果更佳,onCreate中加一次就行了。


MyUtil.showToast("支付成功");
 

MyUtil.cancelToast();
 


文章来源: blog.csdn.net,作者:yechaoa,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yechaoa/article/details/60572130

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。