Android Toast在屏幕上移动

Android Toast在屏幕上移动,android,galaxy,android-toast,Android,Galaxy,Android Toast,我的android应用程序会显示几个Toast消息。我最近在运行Android 5.1.1的Galaxy S6上安装了它,并注意到消息最初显示在屏幕的中心,然后移动到适当的位置(靠近底部,如果没有指定重力),然后回到初始位置,然后消失 Context context = getApplicationContext(); String newMsg = getString(R.string.wild_card_msg); Toast mToast = Toast.makeText(context,

我的android应用程序会显示几个Toast消息。我最近在运行Android 5.1.1的Galaxy S6上安装了它,并注意到消息最初显示在屏幕的中心,然后移动到适当的位置(靠近底部,如果没有指定重力),然后回到初始位置,然后消失

Context context = getApplicationContext();
String newMsg = getString(R.string.wild_card_msg);
Toast mToast = Toast.makeText(context, newMsg, Toast.LENGTH_LONG); 
mToast.setGravity(Gravity.CENTER, 0, 0);
mToast.show(); 
更新:

  • 我已经升级了支持库,并将编译sdk和目标sdk设置为最新的API。这并没有解决问题
  • 我已删除所有.setGravity()调用。没有变化
  • 我注意到Toast消息在安装后的第一次执行时(无论是在USB调试模式下还是通过从PlayStore下载)表现正常,但问题会在(所有)后续运行时再次出现
  • 我还发现,如果我触摸屏幕(任何地方),我的祝酒词会立即消失。我认为Toast显示不会受到用户交互的影响
其他有此问题的人,知道如何解决或知道解决方法吗

请注意,我已经接受了Nick的回答,建议使用snackBar作为解决方法。

试试这个简单的吐司

Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_SHORT).show();

这是因为供应商在其产品中部署了定制版的Android,活动动画也是如此,
通过扩展Toast类并提供自己的动画和样式,或使用开放源代码库显示Toast消息,为活动设置自定义动画,可以在所有设备上实现所需的行为。为活动设置自定义动画会在所有设备上创建一个恒定的动画。

您的问题需要修复或解决方法。最简单的解决方法(在我看来)也是最好的选择,因为它可以让您使用更现代的组件:切换到snackbar

简单快捷键:

//on a fragment you can simply use getView(), otherwise give it the root view of your
//layout so that the snackbar can use it to find context

Snackbar.make(getView(), "The toast text", Snackbar.LENGTH_SHORT).show();
它位于支持设计库中以实现兼容性

这是一个快捷键:

//on a fragment you can simply use getView(), otherwise give it the root view of your
//layout so that the snackbar can use it to find context

Snackbar.make(getView(), "The toast text", Snackbar.LENGTH_SHORT).show();

gradle中可以包含的一些支持/设计库包括

compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'

您应该提供用于显示您的祝酒词的代码。这真的很奇怪。谢谢你,大卫,你的快速反应。下面是一个示例:Context=getApplicationContext();String newMsg=getString(R.String.wildcard\u msg);Toast mToast=Toast.makeText(上下文、newMsg、Toast.LENGTH\u LONG);mToast.setGravity(重心,0,0);mToast.show();请编辑您的问题,不要在评论中使用过去的代码。还有,你为什么在吐司上加上重力?这是我第一次看到有人这样做。如果删除对
setGravity()
的调用会发生什么?我遇到了完全相同的问题。不仅仅是祝酒。任何使用动画的东西也有同样的问题。在新安装后的第一次运行中工作正常,然后中断。到目前为止,这似乎只发生在中六或中六的边缘。作为提示:如果我关闭动画,我的快速菜单动画的问题就会消失。但是,这对于祝酒来说是不可能的,因为它们的动画无法关闭。而且,即使是默认的祝酒也有同样的问题。重力和自定义视图不会影响这一点。@Rajen他没有说他像这样尝试过,他说他尝试过“这个”、“活动”等。让他评论一下他是否尝试过这个。检查这个(没有看到上面的“编辑”…谢谢你帮我这么做).在上面的具体例子中,我设置了一个比重,以避免隐藏屏幕上我想让用户看到的相关部分。但是,这可能与奇怪的行为无关,因为没有重力的简单吐司语句也会发生这种情况。-迪奥DNA 2月5日18:15'@Tara(和Rajen).Thx。事实上,我也尝试过建议的形式,但没有成功。Thx,你的答案听起来似乎合理。我遇到问题的两个S6中有一个来自(欧洲)运营商。我将与他们(和其他客户)核实。对于你的其余答案,我知道有定制选项,但我希望获得标准吐司(或同等产品)首先要工作。Thx,我肯定想尝试一下这个选项。我会相应地设置我的程序(我想我需要在Gradle构建脚本中添加一个编译语句等等),测试一下,然后分享结果。当然,我使用了我刚才添加到回答中的那些。我成功地让snackBar解决方案工作起来。圆形土司的效果更好一些。”性感“…但snackBar的功能基本相同(并提供更多潜力)。最重要的是,它们不会在我的S6屏幕上四处游荡!总之:这是解决我问题的一个很好的方法,我正式“接受了””“你的回答。谢谢你,尼克@Diorna这并不能回答问题,toast和snackbar不是一回事,例如,你不能从后台服务显示snackbar。你也不应该从后台服务显示toast。问题是寻找跳跳吐司的解决方案或避免此问题的解决方法。这是后者,所以它当然回答了这个问题。