我们正在尝试创建一个 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 依赖 没有设计依赖