代码之家  ›  专栏  ›  技术社区  ›  Vector

Kotlin创建一个snackbar

  •  1
  • Vector  · 技术社区  · 7 年前

    我们的问题是如何创建正确的语法来显示Snackbar? 我们想点击一个带有onClick=onSNACK的btnSNACK来显示Snackbar

    这是我们的Java-to-Kotlin转换器代码我们真的很想使用这个

        fun onSNACK(view: View){
        //Snackbar(view)
        //val snackbar = Snackbar(view, "Permission Granted", Snackbar.LENGTH_LONG).setAction("Action", null).show()
            snackbar.make(view, "Replace with your own action", 
            snackbar.LENGTH_LONG).setAction("Action", null).show()    
            snackbar.setActionTextColor(Color.BLUE)
            val snackbarView = snackbar.getView()
            snackbarView.setBackgroundColor(Color.LTGRAY)
            val textView = 
            snackbarView.findViewById(android.support.design.R.id.snackbar_text)
            textView.setTextColor(Color.BLUE)
            textView.setTextSize(28f)
            snackbar.show()
    }
    

        class Snackbar{
        object LENGTH_LONG {
        }
        fun show() {
        }
    }
    
    fun onSNACK(view: View){
        snackbar = Snackbar.make(this, "Welcome to Android Teachers..!!", 
        Snackbar.LENGTH_LONG)
        snackbar.show()
    }
    

    我们的布局是具有陷阱条的活动的相对延迟(RL)

        class Snackbar(view: View?): Any() {
        object LENGTH_SHORT {}
    
    fun View.snack(message: String, length: Int = Toast.LENGTH_LONG, f: Snackbar. 
    () -> Unit) {
        val snack = Snackbar.make(this.findViewById(R.id.RL), message, length)
        snack.f()
        snack.show()
    }
    

    我们认为这是可行的,第一行代码被声明为顶级

        lateinit var snackbar: Snackbar//top level
    fun onSNACK(){
        btnSNACK.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", 
            Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show()
        }
    }
    

    我们在使用和不使用这些不同方法的情况下使用了类Snackbar。 但是工作“make”只是提供了相同的建议“change variable name” 从我们的科特林新手的角度来看这是没有意义的。 我们不想使用Anko插件 是的,我们有jetbrains stdlib v7依赖项没有设计依赖项

    2 回复  |  直到 5 年前
        1
  •  12
  •   Braian Coronel    5 年前

    Refer this for more details

    然后这是你修改后的代码,它将显示快餐店

    fun onSNACK(view: View){
        //Snackbar(view)
        val snackbar = Snackbar.make(view, "Replace with your own action",
                Snackbar.LENGTH_LONG).setAction("Action", null)
        snackbar.setActionTextColor(Color.BLUE)
        val snackbarView = snackbar.view
        snackbarView.setBackgroundColor(Color.LTGRAY)
        val textView =
                snackbarView.findViewById(com.google.android.material.R.id.snackbar_text) as TextView
        textView.setTextColor(Color.BLUE)
        textView.textSize = 28f
        snackbar.show()
    }
    
        2
  •  1
  •   Vector    7 年前

        fun onSNACK(view: View){
    
        var AC:String
        AC = "DISMISS"
    
        val snackbar = Snackbar.make(view, "Click DISMISS to CLOSE", Snackbar.LENGTH_INDEFINITE)
                .setAction(AC,View.OnClickListener {weekDAY(null) })
    
        snackbar.setActionTextColor(Color.RED)
        val snackbarView = snackbar.view
        snackbarView.setBackgroundColor(Color.LTGRAY)
        val textView = snackbarView.findViewById(android.support.design.R.id.snackbar_text) as TextView
        val actionTextView = snackbarView.findViewById(android.support.design.R.id.snackbar_action)as TextView
        textView.setTextColor(Color.BLUE)
        textView.textSize = 28f
        actionTextView.textSize = 28f
    
        snackbar.show()
    }
    

    顶部的两行代码是一个实验,看看Snackbar中的文本是否可以从EditText设置。这种设计允许一个Snackbar,它可以从活动中的其他函数调用,并带有可选的措辞

        3
  •  1
  •   JCarlosR    5 年前

    如果有人不需要自定义太多,可以直接使用,如下所示:

    view.snack("Your message")
    

    separated file ):

    fun View.snack(message: String, duration: Int = Snackbar.LENGTH_LONG) {
        Snackbar.make(this, message, duration).show()
    }