android - Kotlin 创建一个 snackbar

标签 android kotlin material-components-android snackbar

我们正在尝试创建一个 Snackbar。来自 Java 应用程序的代码是使用 Android Studio 中的 Java 到 Kotlin 转换器转换的。接下来,我们查看了许多不同网站上的各种示例,甚至尝试实现 Kotlin Programming Cookbook 一书中的代码。我们将在下面发布所有非工作示例。 我们的问题是如何创建正确的语法来显示 Snackbar? 我们想点击带有 onClick=onSNACK 的 btnSNACK 来显示 Snackbar

这是我们真正想要使用的 Java 到 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()
}

我们的布局是具有 Snackbar 的 Activity 的 RelativeLayout (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”只是提供了相同的建议“更改变量名称” 从我们 Kotlin 新手的角度来看,这是没有意义的。 我们不想使用 Anko 插件 我们也没有看到引用 Snackbar 的导入 是的,我们有 jetbrains stdlib v7 依赖,没有设计依赖

最佳答案

Refer this for more details

然后这是您修改后的代码,它将显示 snackbar

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

关于android - Kotlin 创建一个 snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51972083/

相关文章:

java - 使图像背景成为整个背景

java - 内部类不能有静态声明 - public static final String[]

android - 启用 safe-args 插件后无法从数据绑定(bind)获取 Root View

android - 如何从android中的下拉菜单 Material 设计中删除下划线

android - 将圆形彩色背景应用于 Material PopupMenu 组件的正确方法是什么?

android适配器 ListView ,更改为一行

android - 为什么 ping 在某些设备上有效而在其他设备上无效?

java - 如何根据微调器的选择将纯 TextView 添加到当前布局?

mysql - 将枚举列表保存到MySql时,Spring Data JDBC SQLFeatureNotSupportedException

android - 警报对话框不适应暗模式和非暗模式