当我想在 Kotlin 中自定义我的新按钮时,我遇到了问题

I have a problem when I want to customize my new button in Kotlin

提问人:DevCode 提问时间:2/10/2021 最后编辑:Jin LeeDevCode 更新时间:2/10/2021 访问量:212

问:

当我在 Kotlin 中创建时,我的代码中出现此错误。myButton

enter image description here

Android Kotlin 语法错误

评论

1赞 ʍѳђઽ૯ท 2/10/2021
欢迎使用 Stack Overflow。请首先使用代码格式作为代码。另外,尽量在你的问题中是可以理解的(标题)。关于这个问题,如何将按钮扩展到一个?AppCompatButton

答:

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

首先,这是一个警告,而不是一个错误。您的代码仍将正常运行。但此警告/建议的原因是因为库的一部分还向后支持某些功能,它们也是色调感知的,这意味着它允许动态和背景色调。AppCompatButtonandroidx

来自 AppCompatButton 的文档

一个按钮,它支持旧版本平台上的兼容功能,>包括:

  • 允许通过背景着色方法对其背景进行动态着色 在 ViewCompat 中。
  • 允许使用以下方式设置背景色调 R.attr.backgroundTint 和 R.attr.backgroundTintMode。
  • 允许使用 R.attr.fontFamily 设置字体系列。
  • 这将自动 当您在布局和顶级活动中使用 Button 时使用 / 对话框由 AppCompat 提供。您只需要手动使用 此类在编写自定义视图时。

从上面看,当您使用 时,它会自动使用 ,因此您应该注意在自定义视图中进行扩展以获得大部分内容。ButtonAppCompatButtonAppCompatButton