广告
返回顶部
首页 > 资讯 > 移动开发 >Android 5.0以上Toast不显示的解决方法
  • 771
分享到

Android 5.0以上Toast不显示的解决方法

方法toastAndroid 2022-06-06 06:06:44 771人浏览 薄情痞子
摘要

原因分析 用户使用Android 5.0以上的系统在安装APP时,将消息通知的权限关闭掉了。实际上用户本意只是想关闭Notification,但是Toast的show方法中有调

原因分析

用户使用Android 5.0以上的系统在安装APP时,将消息通知的权限关闭掉了。实际上用户本意只是想关闭Notification,但是Toast的show方法中有调用INotificationManager这个类,而这个类在用户关闭消息通知权限的同时被禁用了,所以我们的吐司无法显示。

Toast.show()

效果图

自定义Toast(上)与Toast(下)比对

问题解决

既然系统不允许我们调用Toast,那么我们就自立门户——自己写一个Toast出来。我们总体的思路是:在Activity的布局中添加View实现Toast的效果。

Toast背景shape定义

我们知道shape的背景是一个半透明黑色的圆角效果:


Toast

因此我们使用的是shape的corners和solid结点:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="Http://schemas.android.com/apk/res/android">
 <solid android:color="#99000000" />
 <corners android:radius="8dp" />
</shape>

定义布局

布局中我们主要使用TextView控件,设置相应的边距和背景即可,布局代码如下:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/mbContainer"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_marginBottom="200dp"
 android:gravity="bottom|center"
 android:orientation="vertical"
 android:paddingLeft="50dp"
 android:paddingRight="50dp">
 <LinearLayout android:id="@+id/toast_linear"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/shape_toastutils_bg"
  android:gravity="bottom|center"
  android:orientation="vertical"
  android:padding="8dp">
  <TextView android:id="@+id/mbMessage"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_gravity="center_vertical"
   android:layout_margin="5dp"
   android:layout_weight="1"
   android:gravity="center"
   android:shadowColor="#BB000000"
   android:shadowRadius="2.75"
   android:textSize="12sp"
   android:textColor="#FFFFFFFF" />
 </LinearLayout>
</LinearLayout>

java代码逻辑

自定义Toast的java代码逻辑主要模仿系统Toast的

makeText() 
show()
两个方法,此外还需要
reset()
方法,实现Toast显示过程中Activity切换时context也随之切换,关键代码如下:

makeText(Context context, String message, int HIDE_DELAY)
方法:


public static ToastUtils makeText(Context context, String message,
        int HIDE_DELAY) {
 if (mInstance == null) {
  mInstance = new ToastUtils(context);
 } else {
  // 考虑Activity切换时,Toast依然显示
  if (!mContext.getClass().getName().endsWith(context.getClass().getName())) {
   mInstance = new ToastUtils(context);
  }
 }
 if (HIDE_DELAY == LENGTH_LONG) {
  mInstance.HIDE_DELAY = 2500;
 } else {
  mInstance.HIDE_DELAY = 1500;
 }
 mTextView.setText(message);
 return mInstance;
}

makeText(Context context, int resId, int HIDE_DELAY)
方法


public static ToastUtils makeText(Context context, int resId, int HIDE_DELAY) {
 String mes = "";
 try {
  mes = context.getResources().getString(resId);
 } catch (Resources.NotFoundException e) {
  e.printStackTrace();
 }
 return makeText(context, mes, HIDE_DELAY);
}

show()
方法


public void show() {
 if (isshow) {
  // 若已经显示,则不再次显示
  return;
 }
 isShow = true;
 // 显示动画
 mFadeInAnimation = new AlphaAnimation(0.0f, 1.0f);
 // 消失动画
 mFadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
 mFadeOutAnimation.setDuration(ANIMATION_DURATION);
 mFadeOutAnimation
   .setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
     // 消失动画后更改状态为 未显示
     isShow = false;
    }
    @Override
    public void onAnimationEnd(Animation animation) {
     // 隐藏布局,不使用remove方法为防止多次创建多个布局
     mContainer.setVisibility(View.GoNE);
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    }
   });
 mContainer.setVisibility(View.VISIBLE);
 mFadeInAnimation.setDuration(ANIMATION_DURATION);
 mContainer.startAnimation(mFadeInAnimation);
 mHandler.postDelayed(mHideRunnable, HIDE_DELAY);
}

方法调用

自定义Toast的使用与系统Toast类似,调用方法如下:


ToastUtils.makeText(context, "消息内容",ToastUtils.LENGTH_SHORT).show();

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能有所帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:Android使用Toast显示消息提示框超简单实现Android自定义Toast示例(附源码)Android Toast的用法总结(五种用法)Android Service中使用Toast无法正常显示问题的解决方法android开发教程之实现toast工具类android自定义toast(widget开发)示例Android 彩色Toast的实现代码


--结束END--

本文标题: Android 5.0以上Toast不显示的解决方法

本文链接: https://www.lsjlt.com/news/23240.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 5.0以上Toast不显示的解决方法
    原因分析 用户使用android 5.0以上的系统在安装APP时,将消息通知的权限关闭掉了。实际上用户本意只是想关闭Notification,但是Toast的show方法中有调...
    99+
    2022-06-06
    方法 toast Android
  • Android中使用Toast.cancel()方法优化toast内容显示的解决方法
    产品在测试过程中发现一个bug,就是测试人员不停的疯狂的点击某个按钮,触发了toast以后,toast内容会一直排着队的显示出来,不能很快的消失。这样可能会影响用户的使用。 看...
    99+
    2022-06-06
    cancel 方法 toast Android
  • Android Service中使用Toast无法正常显示问题的解决方法
    本文实例讲述了Android Service中使用Toast无法正常显示问题的解决方法。分享给大家供大家参考,具体如下: 在做Service简单练习时,在Service中的On...
    99+
    2022-06-06
    android service service 方法 toast Android
  • Android开发中Toast显示消息的方法小结
    本文实例总结了Android开发中Toast显示消息的方法。分享给大家供大家参考,具体如下: Android中提供一种简单的Toast消息提示框机制,可以在用户点击了某些按钮后...
    99+
    2022-06-06
    小结 方法 toast android开发 Android
  • Android在桌面上不显示怎么解决
    如果Android设备上的应用程序在桌面上不显示,您可以尝试以下几种解决方法:1. 重新启动设备:有时候设备可能会出现一些临时的问题...
    99+
    2023-08-08
    Android
  • android图库竖屏不显示status bar的解决方法
    图库在JB和JB2的版本上显示的行为是:横屏全屏显示,竖屏会显示status bar。如何使竖屏也不显示status bar。 修改alps/packages/apps/Gal...
    99+
    2022-06-06
    方法 bar Android
  • php echo不显示的解决方法
    这篇文章将为大家详细讲解有关php echo不显示的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php echo不显示的解决办法:1、添加缓存字符;2、清除缓存;3、通过“ob_end_clea...
    99+
    2023-06-14
  • Android中ScrollView嵌套GridView显示不全解决方法
    Android中ScrollView嵌套GridView显示不全解决方法 由于ScrollView和GridView这两款控件都自带滚动条,一起使用GridView会显示不全 ...
    99+
    2022-06-06
    方法 scrollview gridview Android
  • Android studio Gradle面板里不显示build Task的解决方法
    问题如图: 解决方法: 在AS中,  File--Settings--Experimental里去掉only include test tasks..这一行的勾选  最后刷新一下工程,点击sync Project按钮即可  来源地址:...
    99+
    2023-09-02
    android studio android gradle
  • html图片不显示的解决方法
    小编给大家分享一下html图片不显示的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!html图片不显示的解决办法:1、检查html代码是否输入正确;2、检...
    99+
    2023-06-14
  • css不显示图标的解决方法
    小编给大家分享一下css不显示图标的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css不显示图标的解决办法:1、检查图标引用路径并修改;2、检查字体文件...
    99+
    2023-06-14
  • zblog不显示表情的解决方法
    关键字描述:方法 解决 表情 显示 文件 评论 程序 zblog ZBLOG js 一位网友问我:zblog程序评论不显示表情该怎么办?,自己摸索了下,能够影响zblog程序评论表情不显示的大致有这么3个地方。1、zb...
    99+
    2022-06-12
    方法 解决 表情 显示 文件 评论 zblog 程序 ZBLOG JS
  • win7显示器不亮解决方法
    win7显示器不亮解决办法:(首先已经确定了主机正常开机后屏幕没有任何反应的情况下可以尝试使用以下方法来解决显示器不亮的问题)1、检查是否因为显示器电源的问题导致的显示器黑屏,如下图所示:尝试对显示器的电源以及数据接头进行重新插拔,这样就可...
    99+
    2023-06-05
  • Android中Activity启动默认不显示输入法解决方法
    checkbox控件时导致Activity启动默认不显示输入法。 网上很多资料说要放一个空的Linearlayout,完全是在误导大众, 正确的方法如下: Android Ma...
    99+
    2022-06-06
    默认 输入 方法 activity 输入法 Android
  • 电脑不显示光驱的解决方法
    这篇文章主要介绍电脑不显示光驱的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!电脑不显示光驱的解决方法:首先右键点击此电脑,选择管理;然后找到【DVD/CD-ROM驱动器】,右键点击光驱设备,选择卸载设备;最...
    99+
    2023-06-14
  • nginx php 图片不显示的解决方法
    本篇内容主要讲解“nginx php 图片不显示的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nginx php 图片不显示的解决方法”吧!nginx php图片不显示的解决办法:首先...
    99+
    2023-06-20
  • 电脑开机不显示的解决方法
    这篇文章将为大家详细讲解有关电脑开机不显示的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。电脑开机不显示的解决办法:1、检查电脑的电源线是否连接好;2、查看主机箱内有无多余的金属物或观察主板有无与...
    99+
    2023-06-14
  • Android Studio中Logcat日志不显示的解决办法
    Android Studio中Logcat日志不显示的解决办法 近期,一些开发者反映在使用Android Studio进行应用程序开发时,Logcat日志突然不显示的问题。这种情况可能会给调试和排错带...
    99+
    2023-10-12
    android studio gitee vscode Android
  • win10显卡驱动装不上的解决方法
    我们日常在对电脑的使用过程中,经常都会遇到这样或那样的问题。比如说win10系统显卡驱动安装失败该怎么办呢?今天小编来跟大家说说win10显卡驱动装不删的解决方法,大家一起来看看吧。1、使用快捷键win+R打开运行命令框,输入gpedit....
    99+
    2023-07-13
  • dedecms在Nginx服务器上验证码不显示解决方法
    很多使用dedecms的站长都遇到过在Nginx服务器上验证码不显示的情况,查阅相关资料会发现Ngxin关于网上GD库没打开,关掉验证码等等方法都不行。 试过网上很多关于DEDECMS验证码不显示解决方法都不行,从源码处...
    99+
    2022-06-12
    dedecms Nginx 验证码不显示 解决方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作