android - 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=false
、isClickable=false
、isFocusable=false
和isActivated=false
setOnClickListener(null) 。仍然没有运气。
解决方案
最简单的解决方案是将 的实例传递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
}
毕竟,如果您打算制作一个专门的方法来创建一个按钮,为什么不使用它呢 :)
推荐阅读
- google-apps-script - 如果未每 1 小时收到来自预期发件人的电子邮件,则 Google Apps 脚本发送电子邮件通知
- ios - WhatsApp 如何绕过 APNS 限制以显示设备离线时收到的多条推送消息?
- symfony - 如何从 api-platform 中的其他 api 自动获取数据并保存到 db
- python-3.x - ValueError:无法将字符串转换为浮点数:'8/20/2014' 那么我如何将训练数据集拟合到模型数据集
- python - 如何使用群比?使用 groupby 通过从函数获取输入来查找奇数或偶数
- swift - SingletonMusicPlayer 自己播放
- jquery - 带有垂直滚动条的主体的第二个模态位置(引导模态)
- d3.js - D3.js 代码库的平面数据中的“row_id”是什么意思?
- javascript - 应用程序在 127.0.0.1 上运行良好,但从其他设备访问时无法正常运行
- haskell - Haskell 用新数据替换列表中的数据