getActivity / Toaster

Android 吐司框架,专治 Toast 各种疑难杂症
Apache License 2.0
3.2k stars 404 forks source link

在使用中的一些疑惑 #97

Closed yst1011 closed 2 years ago

yst1011 commented 2 years ago

关于该问题个人认为可以增加一个全局Style和支持每次调用show()设置本次的style。

2、关于toast的Duration,该如何在每次show()的时候指定druation? 我当前的做法: 代码片段一: fun showToast(msg: CharSequence, duration: Int = Toast.LENGTH_SHORT) { ToastUtils.show("$msg\$||\$$duration") } 代码片段二: class MyToastStrategy : ToastStrategy() { private var lastDuration = 0 private val regex = Regex("[0-9]") override fun createToast(application: Application?): IToast { val toast = super.createToast(application) val mLatestText = ToastStrategy::class.java.getDeclaredField("mLatestText") mLatestText.isAccessible = true val str = mLatestText.get(this) as CharSequence val temp = str.split("\$||\$") if (temp.size == 2 && regex.matches(temp[1])) { try { lastDuration = temp[1].toInt() mLatestText.set(this, temp[0]) } catch (e: Exception) { lastDuration = if (str.length > 20) 1 else 0 } } return toast }

override fun getToastDuration(text: CharSequence?) = lastDuration

}

不知是我使用方式不正确,还是可以改进一下。

以上只是我个人的在使用了之后一些疑惑。

getActivity commented 2 years ago

小伙子,关于这个问题,我这边建议你使用 XToast 来显示风格不一样的 Toast,你可以在 BaseActivity 定义一个名为 toast 的方法,默认是使用 ToastUtils 来显示,而在某些特殊的页面上,建议你通过重写父类的 toast 方法,将实现修改成 XToast 来显示。