We are trying to create a Snackbar. The code from a Java app was converted using the Java to Kotlin converter in Android Studio. Next we looked at various examples on many different websites and even tried to implement the code from the book Kotlin Programming Cookbook. We will post all our non working examples below. Our question is how to create the proper syntax to show a Snackbar? We would like to click a btnSNACK with a onClick=onSNACK to show the 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()
}

下一次try 是使用这个代码

    class Snackbar{
    object LENGTH_LONG {
    }
    fun show() {
    }
}

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

我们的布局是有Snackbar的活动的相对布局(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()
}

We thought this would work the first line of code was declared top level

    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类,有和没有这些不同的方法.

推荐答案

Refer this for more details

and then here's your modified code which will show snack bar

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

Kotlin相关问答推荐

Kotlin—列出具有不同T的列表之间的操作'

Jetpack Compose Material3和Material2 Slider onValueChangeFinded()的行为不同

Kotlin stlib中是否有用于将列表<;对<;A,B&>;转换为对<;列表<;A&>,列表<;B&>;的函数

有没有什么方法或算法可以在没有存储的情况下生成唯一的随机数?

协程子作业(job)取消

如何访问嵌套在另一个 map 中的 map 中的值(在 kotlin 中)

在子类中覆盖 kotlin 运算符扩展函数

Kotlin 列表扩展功能

Kotlin 中私有集的完整语法 struct 是什么?

如何使用 Kotlin KClass 属性 simpleName 生成空值

将 Gradle 子元素与 Kotlin 多平台一起使用

使用最新的 com.jakewharton.rxbinding3:rxbinding:3.0.0-alpha2 库时未找到 RxTextView 和其他小部件

Kotlin 的类型具体化使哪些在 Java 或 Scala 中无法实现的成为可能?

添加抽象的私有getter和公共setter的正确方法是什么?

Kotlin:使用自定义设置器时没有lateinit的解决方法?

IllegalStateException:function = , count = 3, index = 3

如何将vararg作为数组传递给Kotlin中的函数?

将字符串编码为Kotlin中的UTF-8

为什么在 Kotlin 中return可以返回一个return?

如何在 Kotlin 中定义新的运算符?