Closed yangkai69 closed 1 year ago
小伙子,根据你提供的复现步骤,我无法复现你说的这个问题
Pixel 2 Android 13
vivo iQOO 9 Pro Android 13
你能用android studio的模拟器试一下吗? 因为我这里有用户反映没有弹出toast,我也不知道他是什么手机,但是我在模拟器里使用Toaster是无法弹出在中间的
@yangkai69 Pixel 2 Android 13 就是 Android 模拟器
我下载的demo,没有跨页面的按钮,能把你现在使用的demo上传一下,然后我放到模拟器里,录制一个视频或者图片吗
@yangkai69 小伙子,你重新拉一下代码,现在最新的 Demo 代码是有这个按钮的
@yangkai69 小伙子,你重新拉一下代码,现在最新的 Demo 代码是有这个按钮的
你看,我使用这样的代码,是无法将toast展示在中间的。
https://github.com/getActivity/Toaster/assets/16103086/41629f8a-97cc-4892-9a00-f0fee28046d6
这是用android 13模拟器,不能展示在中间
这是同一个代码,分别执行在红米k20和模拟器上的对比视频, 由于视频比较大上传不了,我压缩了一下,你能看得到吗
小伙子,介于我无法复现该问题,所以需要你协助 debug 一下代码,请你 debug 一下 ToastStrategy.createToast
方法,并将两个机型运行后的差异之处告知一下我。
小伙子,介于我无法复现该问题,所以需要你协助 debug 一下代码,请你 debug 一下
ToastStrategy.createToast
方法,并将两个机型运行后的差异之处告知一下我。
我使用红米k20(android 10),走了 toast = new SystemToast(mApplication) diyToastStyle(toast, params.style); 但是使用模拟器,走了toast = new SystemToast(mApplication) 没有走 diyToastStyle(toast, params.style);
为什么没有走 diyToastStyle 方法?具体是哪个代码判断导致它不走?
这个方法,全都是false,toast是SystemToast,版本全是33
这个方法走到这里,返回true 这样导致最后不走diyToastStyle
小伙子,你说的这种情况应该是 Android 模拟器的情况吧?那红米 K20 Pro 这块的代码逻辑是怎么执行的呢?
我的红米k20,系统29,Build.VERSION_CODES.R是30,所有截图里的这个方法返回true,能走进diyToastStyle
小伙子,你照着图片将这两句代码注释掉,然后在红米和模拟器上面再跑一下,你就知道为什么框架要这么写了。
嗯,报错了,那现在是否有解决方案,来使得我这种情况,还是能展示在中间。
@yangkai69 小伙子,你如果想要 Toast 能够跨页面显示,那么只能用系统 Toast,但是系统 Toast 在 Android 11 上面禁止了自定义样式,你如果一定要达到既能跨页面显示,又要样式能够自定义,那么只能申请悬浮窗权限了,在拥有悬浮窗权限的情况下,框架会自动切换到一个支持全局显示的 WindowManager 来代替 Toast 显示。
好的,谢谢。
https://github.com/GrenderG/Toasty
这个框架可以跨界面显示,用的是 toast 的 setView,targetAPI30+ 后台情况可能无法弹出,但是这个好久没更新了
https://github.com/GrenderG/Toasty
这个框架可以跨界面显示,用的是 toast 的 setView,targetAPI30+ 后台情况可能无法弹出,但是这个好久没更新了
小伙子,其他框架能做到的,Toaster 也可以做到,Toaster 做不到的,目前就我对其他同类框架的了解,暂时还没有发现框架能做到的。
框架版本【必填】
12.5
问题描述【必填】
我使用了文档上的方法(见最后)跨页面显示,但是在原生android 13/14的系统里显示的不正确(国内安卓13系统,显示正确)。 我需要将toast显示在页面中间,但是在android 13/14系统(android studio自带模拟器)里,他显示在了底部。跟其他系统显示效果不一致。
文档方法: ToastParams params = new ToastParams(); params.text = "我是一个能跨页面展示的 Toast"; // 表示这个 Toast 需要跨页面展示 params.crossPageShow = true; Toaster.show(params);
复现步骤【必填】
1、使用android studio创建一个Deviece,API 33 / 34; 2、使用跨页面的Toast,如: ToastParams params = new ToastParams(); params.text = "我是一个能跨页面展示的 Toast"; // 表示这个 Toast 需要跨页面展示 params.crossPageShow = true; Toaster.show(params); 3、显示不正确(没有显示在中间)。
是否必现【必填】
是
项目 targetSdkVersion【必填】
33
出现问题的手机信息【必填】
android studio模拟器/海外版本iqoo手机
出现问题的安卓版本【必填】
andorid 13/14
问题信息的来源渠道【必填】
自己遇到的
是部分机型还是所有机型都会出现【必答】
部分机型
框架最新的版本是否存在这个问题【必答】
是
框架文档是否提及了该问题【必答】
是
是否已经查阅框架文档但还未能解决的【必答】
是
issue 列表中是否有人曾提过类似的问题【必答】
否
是否已经搜索过了 issue 列表但还未能解决的【必答】
是
是否可以通过 Demo 来复现该问题【必答】
是
提供报错堆栈
No response
提供截图或视频
No response
提供解决方案
No response