首页 > 解决方案 > Android - 带有按钮和文本的 Onclick 视图

问题描述

我有一个使用 anko DSL 构建的自定义按钮:

fun customButton(label: String): View {
    return UI {
        verticalLayout {
            button {
                id = BTN_SERVICE_ITEM_ID
            }.lparams(dip(64), dip(64))

            textView {
                text = label
            }.lparams(wrapContent, wrapContent)
        }
    }.view
}

然后我添加setOnClickListener那个按钮

val customButton = customButton("service 1")

layout.addView(customButton)

customButton.setOnClickListener {
    toast("clicked")
}

当我单击按钮时,未显示吐司。但是当单击自定义按钮的区域时,会显示吐司。

我知道我可以findViewById用来获取按钮然后添加setOnClickListener到它。但是,有什么方法可以让我将 onClickListener 附加到视图上吗?


编辑:
我已经尝试在按钮上添加isEnabled=falseisClickable=falseisFocusable=falseisActivated=falsesetOnClickListener(null) 。仍然没有运气。

标签: androidandroid-layoutkotlinanko

解决方案


最简单的解决方案是将 的实例传递View.OnClickListener给您的方法customButton

我不熟悉 anko 语法,但它应该类似于:

fun customButton(label: String, clickListener: View.OnClickListener): View {
    return UI {
        verticalLayout {
            button {
                id = BTN_SERVICE_ITEM_ID
                onClickListener = clickListener
            }.lparams(dip(64), dip(64))

            textView {
                text = label
            }.lparams(wrapContent, wrapContent)
        }
    }.view
}

毕竟,如果您打算制作一个专门的方法来创建一个按钮,为什么不使用它呢 :)


推荐阅读