我在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">
总结
把遇到的这个问题记下来,对遇到同样问题的同学有帮助就好!嘿嘿~