Android Toast 在屏幕上四处移动
Android Toast moves around on screen
我的 android 应用程序显示多个 Toast 消息。我最近将它安装在 Galaxy S6 运行 Android 5.1.1 上,并注意到消息最初显示在屏幕中心周围,然后它们移动到适当的位置(靠近底部,如果没有重力被指定),然后在消失之前回到初始位置。
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();
更新:
- 我已经升级了支持库,并将 compile-sdk 和 target sdk 设置为最新 API。这并没有解决问题
- 我删除了所有 .setGravity() 调用。没有变化。
- 我注意到 Toast 消息在安装后的第一次执行时表现正常(无论是在 USB 调试模式下还是通过从 PlayStore 下载),但问题在(所有)后续运行时再次出现。
- 我还发现,如果我触摸屏幕(任何地方),我的 Toast 消息会立即消失。我认为 Toast 显示不会受到用户交互的影响。
还有其他人遇到这个问题,知道如何解决它或知道解决方法吗?
请注意,我已经接受了 Nick 的回答,建议将 snackBar 作为解决方法。
试试这个简单的 Toast
Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_SHORT).show();
因为供应商随产品部署的Android定制版本,Activity动画也是如此,
您可以通过扩展 Toast class 并提供您自己的动画和样式或使用开源库来显示吐司消息,在所有设备上实现所需的行为,为活动设置自定义动画,在所有设备上创建恒定动画设备。
您的问题要求修复或解决方法。最简单的解决方法(在我看来)也是最好的选择,因为它会让您使用更现代的组件:切换到小吃店。
简单的小吃店:
//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'
我的 android 应用程序显示多个 Toast 消息。我最近将它安装在 Galaxy S6 运行 Android 5.1.1 上,并注意到消息最初显示在屏幕中心周围,然后它们移动到适当的位置(靠近底部,如果没有重力被指定),然后在消失之前回到初始位置。
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();
更新:
- 我已经升级了支持库,并将 compile-sdk 和 target sdk 设置为最新 API。这并没有解决问题
- 我删除了所有 .setGravity() 调用。没有变化。
- 我注意到 Toast 消息在安装后的第一次执行时表现正常(无论是在 USB 调试模式下还是通过从 PlayStore 下载),但问题在(所有)后续运行时再次出现。
- 我还发现,如果我触摸屏幕(任何地方),我的 Toast 消息会立即消失。我认为 Toast 显示不会受到用户交互的影响。
还有其他人遇到这个问题,知道如何解决它或知道解决方法吗?
请注意,我已经接受了 Nick 的回答,建议将 snackBar 作为解决方法。
试试这个简单的 Toast
Toast.makeText(getApplicationContext(),"Your message", Toast.LENGTH_SHORT).show();
因为供应商随产品部署的Android定制版本,Activity动画也是如此, 您可以通过扩展 Toast class 并提供您自己的动画和样式或使用开源库来显示吐司消息,在所有设备上实现所需的行为,为活动设置自定义动画,在所有设备上创建恒定动画设备。
您的问题要求修复或解决方法。最简单的解决方法(在我看来)也是最好的选择,因为它会让您使用更现代的组件:切换到小吃店。
简单的小吃店:
//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'