2012-11-15 67 views
1

我有一个自定义listView,我正在使用此项目布局。问题是ListView的OnItemClickListener偶处理程序只捕获imageView上的点击,而不捕获其他2个textView上的点击。有任何解决这个问题的方法吗?Android自定义ListView项目不可点击

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="@dimen/Fourdp" 
    android:layout_marginLeft="@dimen/Fourdp" 
    android:layout_marginRight="@dimen/Fourdp" 
    android:layout_marginTop="@dimen/Fourdp" 
    android:gravity="left|center" 
    android:paddingBottom="5px" 
    android:paddingLeft="5px" 
    android:paddingTop="5px" 
    android:descendantFocusability="blocksDescendants"> 

    <ImageView 
     android:id="@+id/color" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="@dimen/Fourdp" 
     android:layout_marginLeft="@dimen/Fourdp" 
     android:layout_marginRight="@dimen/Fourdp" 
     android:layout_marginTop="@dimen/Fourdp"/> 

    <LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:layout_weight="1" 
     android:longClickable="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/task" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#336699" /> 
    </LinearLayout> 

</LinearLayout> 

我试过设置机器人:可调焦=“假”和android:点击=“假”的ImageView的,但它仍然无法正常工作。

回答

1

这是因为含TextViews的LinearLayout中有android:longClickable="true"属性。

如果您将其删除,它将起作用。

为什么你需要它?您可以使用ListView的setOnLongClickListener()方法来检测对项目的长时间点击。

0

您需要实现在适配器中的物品(你膨胀的行视图)一onclicklistner

public View getView(int position, View convertView, ViewGroup parent) 
     { 

      View v = convertView; 
      if (v == null) 
      { 
       LayoutInflater vi = (LayoutInflater)InAppPurchaseActivity.this.getParent().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.list_item_product, null); 
      } 

      // add your view with onclicklistner here 


      return v; 
     } 
0

//在这两个文本视图中添加此行android:duplicateParentState="true"这将起作用。

<LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:layout_weight="1" 
     android:longClickable="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/task" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left" 
      android:duplicateParentState="true" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:duplicateParentState="true" 
      android:textColor="#336699" /> 
    </LinearLayout> 
相关问题