ListView 有多个按钮,列表项无法点击
Posted
技术标签:
【中文标题】ListView 有多个按钮,列表项无法点击【英文标题】:ListView with multiple buttons, list item can't be clicked 【发布时间】:2011-09-05 06:28:44 【问题描述】:我有一个包含两个按钮的列表。当我想单击一个列表项时,它不起作用,但我的按钮仍然可以单击。 如何使所有按钮都包含整个列表项以使其可点击?
列表项:
<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:mode="twoLine">
<Button
android:id="@+id/erase"
android:layout_
android:layout_
android:focusable="false"
android:focusableInTouchMode="false"/>
<ImageButton android:id="@+id/soundf"
android:layout_
android:layout_
android:focusable="false"
android:focusableInTouchMode="false"/>
<TextView android:id="@+id/texxt1"
android:layout_
android:layout_
android:textColor="#CC0"/>
</TwoLineListItem>
包含 ListView 的布局:
<LinearLayout android:orientation="horizontal"
android:layout_
android:layout_>
<Button android:id="@+id/left"
android:layout_
android:layout_
android:text="English to Indonesia"
android:layout_weight="1"
android:background="@drawable/chbutt" />
<Button android:id="@+id/right"
android:layout_
android:layout_
android:text="Indonesia to English"
android:layout_weight="1"
android:background="@drawable/chbutt" />
</LinearLayout>
<ListView android:layout_
android:layout_
android:id="@+id/history"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:isScrollContainer="false" />
</LinearLayout>
【问题讨论】:
你能提供你定义listview的xml吗 重复***.com/questions/2322390/… 嗨@Deepak,你现在可以看到它 【参考方案1】:对于按钮、复选框和ImageViews:
android:focusable="false"
现在 ListView 的两个(按钮和行)都是可点击的。
对于ImageButtons,您必须在运行时设置focusable,因为ImageButtons 的构造函数将其设置为true。 我建议您使用 ImageView 而不是 ImageButton。
【讨论】:
我已经为这个问题苦恼了一段时间。非常感谢先生。 谢谢,这个话题曾经让我头疼!这是一个小把戏。 如何识别点击是来自 listitem 还是来自按钮?? 你会被分别调用列表或按钮的监听器 感谢有关 ImageButtons 构造函数的提示!【参考方案2】:<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/rel1" android:layout_
android:layout_>
<Button
android:id="@+id/erase"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:layout_
android:layout_
android:background="@drawable/closebtn"
android:focusable="false"
android:focusableInTouchMode="false"
/>
<ImageButton android:id="@+id/soundf"
android:layout_
android:layout_
android:layout_below="@+id/erase"
android:layout_alignLeft="@+id/erase"
android:background="@drawable/soundinv"
android:focusable="false"
android:focusableInTouchMode="false"
/>
<TextView android:id="@+id/texxt1"
android:layout_
android:layout_
android:layout_toRightOf="@+id/erase"
android:layout_alignTop="@+id/erase"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#CC0"
/>
<TextView android:id="@+id/texxt2"
android:layout_
android:layout_
android:layout_below="@+id/texxt1"
android:layout_alignLeft="@+id/texxt1"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFF"
/>
</RelativeLayout>
现在您还可以将点击事件赋予相对布局。
【讨论】:
嘿,再检查一下我的xml,是TwoLineListItem,没发现有什么问题【参考方案3】:只需将其添加到您的 Java 代码中:holder.yourButton.setFocusable(false);
我正在使用自己的 cursorAdapter,所以我将代码行放在bindView
的末尾
应该这样做。
【讨论】:
以上是关于ListView 有多个按钮,列表项无法点击的主要内容,如果未能解决你的问题,请参考以下文章
uiautomator - 当我验证每个列表项中的文本时,无法让 ListView 滚动。当我点击屏幕上的最后一个项目时它就失败了