方法集视图已弃用

2022-09-04 21:35:26

当我在我的应用程序上进行自定义 Toast 时,我注意到 setView 已弃用。

Code Screenshot

有人对此有解决方案吗?

toast.setView(customView);

答案 1

因为 已弃用:setView

此方法在 API 级别 30 中已弃用。自定义 Toast 视图已弃用。应用可以使用该方法创建标准文本 Toast,也可以在前台使用 when。从 Android 开始,在后台运行的面向 API 级别或更高级别的应用将不会显示自定义 Toast 视图。makeText(android.content.Context, java.lang.CharSequence, int)SnackbarBuild.VERSION_CODES#RBuild.VERSION_CODES#R

这是有道理的 Toasts 可以显示在其他应用程序的顶部,某些应用程序可以通过在其他应用程序之上创建自定义 Toast 来欺骗用户,即使他们的应用程序在后台上也是如此。但是,如果您的应用程序位于前台,您的自定义Toast仍将显示在所有Android版本中。


答案 2

在 Toast 上设置自定义视图的解决方案已在 API 30 及以后版本中弃用。

文档说

此方法在 API 级别 30 中已弃用。自定义 Toast 视图已弃用。应用可以使用 makeText(android.content.Context, java.lang.CharSequence, int) 方法创建标准文本吐司,或者在前台使用 Snackbar。从 Android Build.VERSION_CODES#R 开始,面向后台的 API 级别 Build.VERSION_CODES#R 或更高版本的应用将不会显示自定义 Toast 视图。

虽然有些情况下有一个步行

Toast.makeText(applicationContext,
                HtmlCompat.fromHtml("<font color='red'>custom toast message</font>", HtmlCompat.FROM_HTML_MODE_LEGACY),
                Toast.LENGTH_LONG).show()

Html 颜色标签也可以是<font color='#ff6347'>

对于与显示的文本有关的每个修改,上述解决方案就足够了。例如,您可以通过插入使文本加粗,或者您可能想要更改字体系列 对于所有这些更改,该解决方案就足够了。<b>my text</b><font font-family='...'> my text </font>

如果要使用背景色等属性修改容器,唯一的替代方法是使用 Snackbar。视图不能再为 Toast 修改。


推荐