以自定义布局为Item的GridView不响应事件

来源:互联网 发布:电子元器件数据库ic 编辑:程序博客网 时间:2024/05/20 07:18

自定义了一个继承 RelativeLayout 的布局之后,放在里面的控件无法响应onClick事件:

public class SquareLayout extends RelativeLayout{

public SquareLayout(Context context) {
super(context);
}

public SquareLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public SquareLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
。。。。。。
}
}

grid_view_item.xml布局文件为:

<com.heqing.ow.widget.SquareLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:background="@drawable/item_selector"
    android:padding="5dp"
    android:gravity="center" >




    <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/netWork_imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:scaleType="centerInside" />


    <TextView
        android:id="@+id/tip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#88000000"
        android:textColor="#ffffff"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:layout_centerHorizontal="true" />


</com.heqing.ow.widget.SquareLayout>

GridView一该Item布局后,GridView无法响应点击事件: 

解决如下:

在自定义SquareLayout  里面要分发OnTouch事件,这样才能被GridView 捕获即:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return false;
}

返回FALSE表示事件没有被处理,传给上一级。

【以上为个人理解,如有错误,请指正,谢谢】


0 0
原创粉丝点击