Closed yst1011 closed 2 years ago
issue 是否有人曾提过类似的问题?【必答】 没有检索过,但是看了看源代码,在使用层面应该都会存在这些问题。
你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方) 1、关于样式Style,全局初始化了BlackToastStyle,但是某些页面可能色调比较暗使用BlackToastStyle不太合适,那么在ToastUtils.show()之前调用了setStyle(),这时应该就覆盖掉了全局初始化时设置的。
关于该问题个人认为可以增加一个全局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
}
不知是我使用方式不正确,还是可以改进一下。
以上只是我个人的在使用了之后一些疑惑。
小伙子,关于这个问题,我这边建议你使用 XToast 来显示风格不一样的 Toast,你可以在 BaseActivity 定义一个名为 toast 的方法,默认是使用 ToastUtils 来显示,而在某些特殊的页面上,建议你通过重写父类的 toast 方法,将实现修改成 XToast 来显示。
issue 是否有人曾提过类似的问题?【必答】 没有检索过,但是看了看源代码,在使用层面应该都会存在这些问题。
你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方) 1、关于样式Style,全局初始化了BlackToastStyle,但是某些页面可能色调比较暗使用BlackToastStyle不太合适,那么在ToastUtils.show()之前调用了setStyle(),这时应该就覆盖掉了全局初始化时设置的。
关于该问题个人认为可以增加一个全局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 }
}
不知是我使用方式不正确,还是可以改进一下。
以上只是我个人的在使用了之后一些疑惑。