GridView设置Item的点击事件无效

我在GridView每一个Item中添加了一个Button,然后在Activity中调用GridView的setOnItemClickListener,

点击事件中的Toast并没有反应,原因就是Button的点击事件会屏蔽GridView的点击事件,这就涉及到事件分发了。

解决方法:

1、其实GridView和ListView,Item和Item中Button都能设置点击事件,可以在适配器中设置点击事件,

2、但是一般使用GridView和ListView还不同,一般GridView里面就放一个控件,那我们用TextView代替Button好了:

我是自己给button绘的边,设置的按下变色之类的,那我们可以不用button,

TextView用我之前用在Button上的background可以实现一样的效果

GridView的每个Item的布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/small_textview"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:background="@drawable/button_add_city_selector"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_centerInParent="true"
        android:gravity="center" />
</RelativeLayout>

因为使用TextView时,点击GridView的Item会有默认黄色的效果

设置android:listSelector将点击效果取消,这样就只有TextView的点击效果了

<GridView
        android:id="@+id/grid_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3"
        android:listSelector="@android:color/transparent">

总结

把遇到的这个问题记下来,对遇到同样问题的同学有帮助就好!嘿嘿~

猜你喜欢

转载自blog.csdn.net/pengbo6665631/article/details/80428651