首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anko ListItem setOnClickListener

Anko ListItem setOnClickListener
EN

Stack Overflow用户
提问于 2018-06-01 21:10:48
回答 1查看 168关注 0票数 0

我试着玩一些Kotlin和Anko (更熟悉iOS),并从他们的例子,有以下代码:

代码语言:javascript
复制
internal open class TextListWithCheckboxItem(val text: String = "") : ListItem {
protected inline fun createTextView(ui: AnkoContext<ListItemAdapter>, init: TextView.() -> Unit) = ui.apply {
    textView {
        id = android.R.id.text1
        text = "Text list item" // default text (for the preview)
        isClickable = true
        setOnClickListener {
              Log.d("test", "message")
        }
        init()
    }

    checkBox {
        id = View.generateViewId()
        setOnClickListener {
            Log.d("hi", "bye")
        }
        init()
    }
}.view

用复选框和文本视图显示我想要的行。但是,我希望将一个操作绑定到行选择,而不是复选框选择。在这两种情况下都放置日志消息,当选中行时,我会得到一条日志消息,这会翻转复选框。但是,它不记录来自textView单击处理程序的"test:message“。有办法绕过这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 00:34:06

显然你的问题已经被here解决了。由于复选框正在消耗ListItem的所有焦点,您应该将CheckBoxfocusable标志设置为false:

代码语言:javascript
复制
checkBox {
    focusable = View.NOT_FOCUSABLE
}

不幸的是,setFocusable调用至少需要API 26,但是您可以定义视图.xml并按照描述的here手动膨胀视图。

代码语言:javascript
复制
<CheckBox
    ...
    android:focusable="false" />

或者,您可以尝试设置一个onTouchListener返回false,这意味着触摸事件将传递给底层视图。

(让我知道它是否有效;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档