【问题标题】:duplicateParentState stops working when ImageButton is added添加 ImageButton 时,duplicateParentState 停止工作
【发布时间】:2014-01-06 14:14:15
【问题描述】:

我有一个 ListView 和一个继承自 ArrayAdapter 的自定义 Adapter。我正在使用LinearLayout 的自定义Checkable 子类来突出显示列表中的最后一个选定项,它基本上将选中状态映射到选中状态。

Adapter 用于列表项的布局如下:

<com.wordlistdictionary.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:layout_height="40dp">
<LinearLayout
    android:id="@+id/entry_text"
    android:layout_width="0dp"
    android:layout_weight="7"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:duplicateParentState="true"
    />

<TextView
    android:id="@+id/entry_number_of_occurences_1"
    android:textSize="9pt"
    android:typeface="monospace"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textColor="@color/item_text_color_selector"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:duplicateParentState="true"
    />

<TextView
    android:id="@+id/entry_frequency_1"
    android:textSize="9pt"
    android:typeface="monospace"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:textColor="@color/item_text_color_selector"
    android:layout_gravity="center_vertical"
    android:layout_weight="2"
    android:duplicateParentState="true"/>

<ImageButton
    android:id="@+id/delete_entry_button_1"
    android:src="@drawable/delete_button_selector"
    android:layout_height="40dp"
    android:layout_width="40dp"
    android:layout_gravity="center_vertical"
    android:layout_marginRight="15dp"
    android:duplicateParentState="true"
    />
</com.wordlistdictionary.CheckableLinearLayout>

在我添加最后一个ImageButton 视图之前,它会按照我的预期工作,最后一个触摸项目的文本颜色会发生变化,并且它会从该点停止突出显示文本。

有没有人遇到过这种情况,你的解决方案是什么?

目前我正在考虑一种解决方法,即手动将选定状态从我的自定义布局传播到所有子视图,而不是仅仅更改布局视图本身的选定状态并依赖duplicateParentState 机制。

【问题讨论】:

    标签: android android-listview imagebutton


    【解决方案1】:

    事实证明,当添加到列表项时,ButtonImageButton “吞噬”了触摸事件,因此它不会传播到列表视图,所以我必须在我的 getView() 中设置 imageButton.setTouchable(false)自定义Adapter

    请注意,我首先尝试在我的布局文件中设置 android:touchable='falase',但它不起作用,所以我必须以编程方式设置它。

    我在这 2 个 SO 问题中找到了答案:
    ListView setOnItemClickListener not working by adding button
    Click is not working on the Listitem Listview android

    【讨论】:

    • 是的,imageButton 是一个可点击的视图,它会消耗触摸/点击事件,所以事件不会回到父布局。如果你将 textview 设置为可点击,它也会有同样的效果。
    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2021-07-08
    相关资源
    最近更新 更多