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 有多个按钮,列表项无法点击的主要内容,如果未能解决你的问题,请参考以下文章

Android Listview 多个按钮点击

从具有按钮的 ListView 获取列表项的位置

ListView的用法

uiautomator - 当我验证每个列表项中的文本时,无法让 ListView 滚动。当我点击屏幕上的最后一个项目时它就失败了

在列表视图中添加收藏按钮

如何在单击 ListView 中的按钮时取消选中所有列表项