Android Toast在屏幕上移动

Dio*_*DNA 15 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, newMsg, Toast.LENGTH_LONG); 
mToast.setGravity(Gravity.CENTER, 0, 0);
mToast.show(); 
Run Code Online (Sandbox Code Playgroud)

更新:

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

有其他人遇到此问题,知道如何解决或知道解决方法吗?

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

Nic*_*oso 7

您的问题要求修复或解决方法.最简单的解决方法(在我看来)也是最好的选择,因为它会让您使用更现代的组件:切换到快餐栏.

简单小吃:

//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();
Run Code Online (Sandbox Code Playgroud)

它位于支持设计库中以实现兼容性.

这是一个小吃吧:

在此输入图像描述

并且可以包含在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'
Run Code Online (Sandbox Code Playgroud)