【问题标题】:Android Custom ListView item unclickableAndroid 自定义 ListView 项目不可点击
【发布时间】:2012-11-15 18:25:00
【问题描述】:

我有一个自定义的 listView,我用这个项目布局填充。问题是 ListView 的 OnItemClickListener 偶数处理程序仅捕获对 imageView 的点击,而不是对其他 2 个 textViews 的点击。无论如何要解决这个问题?

<?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:focusable="false" 和 android:clickable="false" 设置为 ImageView,但仍然无法正常工作。

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

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

    如果你删除它,它会起作用。

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

    【讨论】:

      【解决方案2】:

      您需要为您的适配器中的项目实现一个 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;
              }
      

      【讨论】:

        【解决方案3】:

        //在你的两个文本视图中添加这一行 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>
        

        【讨论】:

          猜你喜欢
          • 2012-06-06
          • 2010-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多