ListView项目不可点击(具有focusable = false的事件)

时间:2015-04-18 13:09:47

标签: java android xml listview

我有一个包含图像视图,文本视图和复选框的ListView。当我添加imageview时,行变得无法点击。我尝试过多种解决方案,包括android:focusable="false"android:descendantFocusability="blocksDescendants"android:clickable=true

这是我的ListView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:clickable="true"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical" >
<ImageView
    android:id="@+id/imgListView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:focusable="false"
    android:src="@drawable/ic_launcher" />
<TextView
    android:id="@+id/txtListView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@id/imgListView"
    android:focusable="false"
    android:textColor="#FFFFFF" />
<CheckBox
    android:id="@+id/chkListView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:focusable="false" />
</RelativeLayout>

以下是使用它的活动:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".FolderActivity" >
<ListView
    android:id="@+id/lstFolders"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" 
    android:dividerHeight="1dp"
    android:divider="#FFFFFF">
</ListView>
</RelativeLayout>

我只需要像之前那样再次点击行。

PS:当我第一次添加复选框并用android:focusable="false"解决它时,我也遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

为什么不在适配器的getview方法中为每个视图编写on click侦听器。 也请参考这个问题 Android: ListView elements with multiple clickable buttons
因为即使我有同样的问题,根据我的经验,如果你只有一个可以在listview中点击的元素,那么xml参数可以工作,对于多个我只在适配器内编写它。

答案 1 :(得分:0)

我们需要进行以下更改,以便通过避免点击/关注listview项目的组件来允许项目点击列表视图。

  1. 添加android:descendantFocusability =&#34; blocksDescendants&#34;在...上 项目布局。
  2. 添加android:focusableInTouchMode =&#34; false&#34;在...上 listview项目中的组件(例如,imageview,button, 复选框,textview,自定义视图,画布)
  3. 返回false 自定义视图上的事件列表器(例如:扩展的类) View实现了View.OnTouchListener和方法public boolean onTouch(View v,MotionEvent事件)应返回false。