Kotlin 创建一个小吃店
Kotlin create a snackbar
我们正在尝试创建一个 Snackbar。来自 Java 应用程序的代码是使用 Java 到 Android Studio 中的 Kotlin 转换器转换的。接下来,我们查看了许多不同网站上的各种示例,甚至尝试实现 Kotlin Programming Cookbook 一书中的代码。我们将 post 下面的所有非工作示例。
我们的问题是如何创建正确的语法来显示 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()
}
}
我们使用 class Snackbar 有和没有这些不同的方法。
我们能够删除大多数这些示例中的所有红色警告
但作品 "make" 只是提供了相同的建议 "change variable name"
从我们 Kotlin 新手的角度来看,这是没有意义的。
我们不想使用 Anko 插件
我们也没有看到引用 Snackbar 的导入
是的,我们有 jetbrains stdlib v7 依赖没有设计依赖
然后这是您修改后的代码,它将显示小吃店
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()
}
我们对@SSB 的回答非常满意。我们注意到我们没有 Action 按钮,所以下面的代码提供了一个 Action 按钮的添加,以及如何设置它的样式似乎支持设计中的 snackbar_action 在试图提供示例代码的网站上很少或根本没有提及。单击 DISMISS 按钮时,我们只是在调用另一个函数。
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()
}
顶部的两行代码是一个实验,用于查看是否可以从 EditText 设置 Snackbar 中的文本。这种设计将允许 Snackbar 可以从 Activity 中的其他函数调用,带有可选的措辞
如果有人不需要过多自定义,可以直接使用,如下:
view.snack("Your message")
为此,只需定义一个扩展函数(最好在 separated file 中):
fun View.snack(message: String, duration: Int = Snackbar.LENGTH_LONG) {
Snackbar.make(this, message, duration).show()
}
在 Koltin 中显示它的简单方法:
private fun showSnackBar() {
val snack = Snackbar.make(rootView, "Sample snack bar message", Snackbar.LENGTH_INDEFINITE)
snack.setAction("Click Me") {
// TODO when you tap on "Click Me"
}
snack.show()
}
注意:将 rootView 替换为您在布局中的视图 ID,将 LENGTH_INDEFINITE
更改为 LENGTH_SHORT
短时间或 LENGTH_LONG
显示长时间时间和解雇。
方法如下,
Snackbar.make(requireView(), "Hello World", Snackbar.LENGTH_SHORT).show()
在 Kotlin 中是这样
Snackbar.make(binding.root, "My Message", Snackbar.LENGTH_SHORT).show()
我有同样的问题,但我用它来解决我的问题
val snack = Snackbar.make(View(this@MainActivity),"This is a simple Snackbar",Snackbar.LENGTH_LONG)
snack.show()
我们正在尝试创建一个 Snackbar。来自 Java 应用程序的代码是使用 Java 到 Android Studio 中的 Kotlin 转换器转换的。接下来,我们查看了许多不同网站上的各种示例,甚至尝试实现 Kotlin Programming Cookbook 一书中的代码。我们将 post 下面的所有非工作示例。 我们的问题是如何创建正确的语法来显示 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()
}
}
我们使用 class Snackbar 有和没有这些不同的方法。 我们能够删除大多数这些示例中的所有红色警告 但作品 "make" 只是提供了相同的建议 "change variable name" 从我们 Kotlin 新手的角度来看,这是没有意义的。 我们不想使用 Anko 插件 我们也没有看到引用 Snackbar 的导入 是的,我们有 jetbrains stdlib v7 依赖没有设计依赖
然后这是您修改后的代码,它将显示小吃店
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()
}
我们对@SSB 的回答非常满意。我们注意到我们没有 Action 按钮,所以下面的代码提供了一个 Action 按钮的添加,以及如何设置它的样式似乎支持设计中的 snackbar_action 在试图提供示例代码的网站上很少或根本没有提及。单击 DISMISS 按钮时,我们只是在调用另一个函数。
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()
}
顶部的两行代码是一个实验,用于查看是否可以从 EditText 设置 Snackbar 中的文本。这种设计将允许 Snackbar 可以从 Activity 中的其他函数调用,带有可选的措辞
如果有人不需要过多自定义,可以直接使用,如下:
view.snack("Your message")
为此,只需定义一个扩展函数(最好在 separated file 中):
fun View.snack(message: String, duration: Int = Snackbar.LENGTH_LONG) {
Snackbar.make(this, message, duration).show()
}
在 Koltin 中显示它的简单方法:
private fun showSnackBar() {
val snack = Snackbar.make(rootView, "Sample snack bar message", Snackbar.LENGTH_INDEFINITE)
snack.setAction("Click Me") {
// TODO when you tap on "Click Me"
}
snack.show()
}
注意:将 rootView 替换为您在布局中的视图 ID,将 LENGTH_INDEFINITE
更改为 LENGTH_SHORT
短时间或 LENGTH_LONG
显示长时间时间和解雇。
方法如下,
Snackbar.make(requireView(), "Hello World", Snackbar.LENGTH_SHORT).show()
在 Kotlin 中是这样
Snackbar.make(binding.root, "My Message", Snackbar.LENGTH_SHORT).show()
我有同样的问题,但我用它来解决我的问题
val snack = Snackbar.make(View(this@MainActivity),"This is a simple Snackbar",Snackbar.LENGTH_LONG)
snack.show()