带图片的Toast,其实就是自定义布局的Toast,只要Toast.setView即可。
Toast也能设置显示的位置,中间或者底部之类的
toast.setGravity(gravity, xOffset, yOffset)Toast过长显示不居中的问题,就可以自定义布局

Toast

toast.gif
使用
findViewById<Button>(R.id.btnShortToast).setOnClickListener {
ToastUtils.shortToast(R.string.normal_toast)
}
findViewById<Button>(R.id.btnLongToast).setOnClickListener {
ToastUtils.longToast(getString(R.string.long_toast))
}
findViewById<Button>(R.id.btnCenterToast).setOnClickListener {
ToastUtils.setToastGravity(Gravity.CENTER, 0, 0)
ToastUtils.shortToast(R.string.center_toast)
}
findViewById<Button>(R.id.btnBottomToast).setOnClickListener {
ToastUtils.setToastGravity(Gravity.BOTTOM, 0, 100)
ToastUtils.shortToast(R.string.bottom_toast)
}
findViewById<Button>(R.id.btnImageToast).setOnClickListener {
ToastUtils.shortImageToast(R.string.image_toast)
}直接看代码解释
object ToastUtils { private var toast: Toast? = null
private var imageToast: Toast? = null
fun cancelToast() {
toast?.let {
it.cancel()
}
imageToast?.let {
it.cancel()
}
} /**
* 初始化Toast
*/
private fun initToast(): Toast? { if (null == toast) { //Toast如果没有自定义view,就要makeText
toast = Toast.makeText(BaseApplication.getInstance(), "", Toast.LENGTH_SHORT)
} return toast
} /**
* 默认Toast
*/
fun shortToast(message: Any) {
normalToast(message, Toast.LENGTH_SHORT)
} fun longToast(message: Any) {
normalToast(message, Toast.LENGTH_LONG)
} /**
* @param message 内容,string或资源id
* @param duration Toast的显示时长
*/
fun normalToast(message: Any, duration: Int) {
initToast()
toast?.let { if (message is String) {
it.setText(message)
} else if (message is Int) {
it.setText(message)
}
it.duration = duration
it.show()
}
} /**
* 设置Toast位置
*/
fun setToastGravity(gravity: Int, xOffset: Int, yOffset: Int) {
toast?.let {
it.setGravity(gravity, xOffset, yOffset)
}
} /**
* 图片Toast初始化
*/
private fun initImageToast(): Toast? { if (null == imageToast) {
imageToast = Toast(BaseApplication.getInstance())
imageToast?.setGravity(Gravity.CENTER, 0, 0)
} return imageToast
} /**
* 默认图片Toast
*/
fun shortImageToast(message: Any) {
imageToast(message, null, Toast.LENGTH_SHORT)
} /**
* 自定义图片Toast
*/
fun shortImageToast(message: Any, img: Int?) {
imageToast(message, img, Toast.LENGTH_SHORT)
} /**
* 长时间图片Toast
*/
fun longImageToast(message: Any) {
imageToast(message, null, Toast.LENGTH_LONG)
} /**
* 长时间自定义图片Toast
*/
fun longImageToast(message: Any, img: Int?) {
imageToast(message, img, Toast.LENGTH_LONG)
} /**
* 设置图片Toast位置
*/
fun setImageToastGravity(gravity: Int, xOffset: Int, yOffset: Int) {
imageToast?.let {
it.setGravity(gravity, xOffset, yOffset)
}
} /**
* @param message 内容,string或资源id
* @param img 图片资源id
* @param duration Toast的显示时长
*/
fun imageToast(message: Any, img: Int?, duration: Int) {
initImageToast()
imageToast?.let { //可以是其他自定义布局
val rootView = LayoutInflater.from(BaseApplication.getInstance()).inflate(R.layout.toast_view, null) //设置消息
val txtContent = rootView.findViewById<TextView>(R.id.txtContent) if (message is String) {
txtContent.text = message
} else if (message is Int) {
txtContent.setText(message)
} //设置图片
val imgContent = rootView.findViewById<ImageView>(R.id.imgContent)
imgContent.setImageResource(R.drawable.ic_success_white)
img?.let {
imgContent.setImageResource(it)
}
it.view = rootView
it.duration = duration
it.show()
}
}
}
作者:Good包籽
链接:https://www.jianshu.com/p/a21b4f409250
随时随地看视频