【问题标题】:How to handle click listeners of a single view on a custom compound widget in android?如何在android中的自定义复合小部件上处理单个视图的点击监听器?
【发布时间】:2019-11-04 20:03:36
【问题描述】:

我有一个带有两个视图(图像视图和文本视图)的自定义小部件 (InfoIcon)。 我在主布局文件中多次使用此自定义小部件 (InfoIcon),并为整个自定义小部件使用单独的 Id (infoIconOne、infoIconTwo、infoIconThree)。 现在只想监听 ImageView(Custom widget 内部)的 onClick 事件,以及如何识别 ImageView 点击是否发生在父布局的 infoIconOne/infoIconTwo/infoIconThree 中?

信息图标:

<RelativeLayout
    android:id="@+id/icon_layout">
    <ImageView
        android:id="@+id/image_icon"
        android:src="@drawable/icon" />
    <TextView
        android:id="@+id/icon_info_text"/>
</RelativeLayout>

主布局:

<android.support.constraint.ConstraintLayout
    android:id="@+id/parent_container">
    <InfoIcon
        android:id="@+id/iconOne"/>
    <InfoIcon   
        android:id="@+id/iconTwo"/>
    <InfoIcon   
        android:id="@+id/iconThree"/>
</android.support.constraint.ConstraintLayout>

【问题讨论】:

    标签: android onclicklistener custom-widgets


    【解决方案1】:

    findViewById(R.id.infoIconOne).findViewById(R.id.image_icon).setOnClickListener{...}

    并且您需要为所有具有 id 的图像视图执行此操作

    【讨论】:

    • 是的,感谢您的解决方案。但是在单击布局中三个图标中的任何一个时,onClick(View v) 将被视图“image_icon”触发。现在我如何能够区分 image_icon 是来自 iconOne 还是 iconTwo 还是 iconThree?
    • 我使用 (View)view 解决了这个问题。 onClick() 函数中的 getParent() 以区分布局中的 iconOne 或 iconTwo 或 iconThree
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多