提问人:DevCode 提问时间:2/10/2021 最后编辑:Jin LeeDevCode 更新时间:2/10/2021 访问量:212
当我想在 Kotlin 中自定义我的新按钮时,我遇到了问题
I have a problem when I want to customize my new button in Kotlin
答:
0赞
xfathurrahman
2/10/2021
#1
Button
是一个函数,而不是一个扩展的类。只需在MainActivity
例如
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
MyButton() // this is how to make button inside function
}
private fun MyButton(){
// you can put your button listener here
// example :
mMyBtn.setOnClickListener {
// and then put ur logic here
Toast.makeText(this, "Button Clicked", Toast.LENGTH_SHORT).show()
}
}
}
或者尝试下面
class MyButton : androidx.appcompat.widget.AppCompatButton {
constructor(context: Context?) : super(context!!)
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context!!, attrs, defStyle)
protected override fun onDraw(canvasObject: Canvas) {
super.onDraw(canvasObject)
}
}
让我知道这是否适合您:)
评论
0赞
Tenfour04
2/10/2021
你怎么知道他们不需要子类化 Button?
0赞
Rajan Kali
2/10/2021
#2
首先,这是一个警告,而不是一个错误。您的代码仍将正常运行。但此警告/建议的原因是因为库的一部分还向后支持某些功能,它们也是色调感知的,这意味着它允许动态和背景色调。AppCompatButton
androidx
来自 AppCompatButton 的文档
一个按钮,它支持旧版本平台上的兼容功能,>包括:
- 允许通过背景着色方法对其背景进行动态着色 在 ViewCompat 中。
- 允许使用以下方式设置背景色调 R.attr.backgroundTint 和 R.attr.backgroundTintMode。
- 允许使用 R.attr.fontFamily 设置字体系列。
- 这将自动 当您在布局和顶级活动中使用 Button 时使用 / 对话框由 AppCompat 提供。您只需要手动使用 此类在编写自定义视图时。
从上面看,当您使用 时,它会自动使用 ,因此您应该注意在自定义视图中进行扩展以获得大部分内容。Button
AppCompatButton
AppCompatButton
评论
AppCompatButton