Android 带图片的Toast

作者 : 开心源码 本文共2972个字,预计阅读时间需要8分钟 发布时间: 2022-05-12 共196人阅读

Android 带图片的Toast

Github代码

  • 带图片的Toast,其实就是自己设置布局的Toast,只需Toast.setView就可。

  • Toast也可设置显示的位置,中间或者者底部之类的
    toast.setGravity(gravity, xOffset, yOffset)

  • Toast过长显示不居中的问题,即可以自己设置布局


Toasttoast.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()        }    }}

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Android 带图片的Toast

发表回复