美文网首页
自定义Toast[宽度全屏、高度自定义,不同时显示]

自定义Toast[宽度全屏、高度自定义,不同时显示]

作者: 小强开学前 | 来源:发表于2020-04-10 11:27 被阅读0次

Nice nice.

先看效果


Gif_20200410_110623.gif
  package com.github.john.test

import android.content.Context
import android.graphics.Color
import android.view.Gravity
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
import android.widget.FrameLayout
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat

class TopToast(val context: Context) :Toast(context){

    private var topText: String = ""
    private val museView: TextView = TextView(context).apply {
        setBackgroundColor(Color.parseColor("#BB725A7C"))
        gravity = Gravity.CENTER
        setTextColor(ContextCompat.getColor(context, android.R.color.white))
        setTextIsSelectable(false)
        layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MuseUtil.newDp2px(40f))
    }

    init {
        view = FrameLayout(context).apply {
            addView(museView)
            systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        }
        setGravity(Gravity.TOP+Gravity.FILL_HORIZONTAL, 0, MuseUtil.newDp2px(64f))
    }

    fun setTopText(text:String):TopToast{
        topText = text
        return this
    }
    fun setTopText(@StringRes stringRes:Int):TopToast{
        topText = context.getString(stringRes)
        return this
    }

    override fun getDuration(): Int = LENGTH_SHORT

    override fun show() {
        museView.text = topText
        super.show()
    }

}

调用的时候,可以

var myToast:TopToast? = null

fun toast(){
  myToast?.cancel()
  myToast = TopToast(this)
  myToast.setText().show()
}

完美。

相关文章

网友评论

      本文标题:自定义Toast[宽度全屏、高度自定义,不同时显示]

      本文链接:https://www.haomeiwen.com/subject/caynphtx.html