Android 11 自定义 Toast 被禁止

Android 11(R)是2020年的下一代 Android,Google 于前段时间发布了 Android 11: Developer Preview 3

 

在 Android 11 Toast 的行为发生了变更

Android 11 自定义 Toast 被禁止

 

主要是以下四点

  • 禁止后台自定义 Toast
  • text toast 不允许自定义
  • setView() 被弃用
  • 新增 Toast.Callback 回调

自定义 Toast 「不能」 在 app 处于后台时显示,取而代之会显示 「"Background custom toast blocked for package [packageName] See g.co/dev/toast."」 的文本 toast

  普通的 text toast 不受影响

text toast 不允许自定义

默认的 toast 是 text toast,如果想使用自定义的 toast ,需要调用 setView() 方法

 

新增 Toast.Callback 回调

添加了新的回调(Toast.Callback),以通知 Toast 显示和隐藏。可以通过以下方法轻松将其添加到 Toast 中:

 

override fun onToastShown() {
super.onToastShown()
Log.d(TAG, "onToastShown")
}

override fun onToastHidden() {
super.onToastHidden()
Log.d(TAG, "onToastHidden")
}