gridview里item是textView、Button单击事件相应,以及按下效果的取去除

1、响应事件的区别:

gridview的item是textView的时候,gridview的itemonclick事件可以正常相应,但是换了Button后不能,原因如下:

public class Button extends TextView {
    public Button(Context context) {
        this(context, null);
    }

public Button(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.buttonStyle);
    }

public Button(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
所以,主要的猫腻还是在com.android.internal.R.attr.buttonStyle这个里面,查看这个xml文件,Button设置多了两个属性如下:
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
所以我们要在代码里面把这两个属性设为false,这样就可以响应GridView的onItemClick方法了,但是一定要注意,不管是Button,还是TextView,只要设置了onClick() 的话,那么OnItemClick()就不会被执行(以上的内容都是基于一个GridView或者是ListView的每个Item只有一项,要不是Button,要不是TextView,不是这种情况的,上面的就只能参考一下了)

2、按下系统的效果去除:

textView按下的时候,系统会有一个蓝色的矩形阴影效果,对于圆角的设计来说,不好看,这个阴影其实是你点击gridview的item产生的,listview也是这样,所以去掉这个效果,看了一采取以下几种方式:

取消GridView/ListView item被点击时的效果

方法一,在控件被初始化的时候设置

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
listView.setSelector(new ColorDrawable(Color.TRANSPARENT));

方法二,在布局文件中设置listSelector属性

<GridView
        android:listSelector="@android:color/transparent"
        android:numColumns="auto_fit"
        android:columnWidth="50dp"
        android:stretchMode="spacingWidth"
        android:layout_weight="1.0"
        android:layout_height="0dip"
        android:layout_width="match_parent"/>

<ListView
        android:listSelector="@android:color/transparent"
        android:layout_height="match_parent"
        android:layout_width="match_parent"/>

当然也可以定制化自己想要的效果。

推荐使用方法二,解耦逻辑代码与布局文件。

时间: 2024-10-22 09:56:05

gridview里item是textView、Button单击事件相应,以及按下效果的取去除的相关文章

Button单击事件

今天研究了一下如何写最基本的Android程序,为Button添加单击等事件.自己在动手的时候确实遇到了很多问题,同时自己从上午的零基础的状态,到下午做出来一个成品app,还是挺兴奋滴~尤其是里面的控件,自己看说明或者网上查资料使用,逐步探索的过程~ 下面记录一下Button单击事件~ public class MainActivity extends Activity { Button myButton; TextView myTextView; @SuppressLint("SetJavaS

button单击事件的四种写法

Button单击事件的四种写法:  1.第一种写法:匿名内部类 附上代码: public class MainActivity extends Activity{ private Button btn ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (B

对于服务器控件asp:Button单击事件失效问题汇总

今天写了个弹出层内的导出,发现按钮的单击事件点击无效,于是查找了各种原因,尝试多种方法进行解决. 先来说下可能的原因吧. 1.按钮事件方法的名称是否准确无误 2.是否为客户端按钮,即含有 runat="sever"标签. 3.按钮是否存在在<form runat="server">标签内. 4.检查是否按钮存在在被嵌套的form标签内..net 不允许form被嵌套. 5.还有一些其他不知道的限制因素.以后再补充吧.. 上面前四种情况,从文字上就能知道解

【转】为ListView每个Item上面的按钮添加事件

原文网址:http://blog.csdn.net/qq435757399/article/details/8256453 1.先看下效果图:        在这里仅供测试,我把数据都写死了,根据需要可以自己进行修改,此外实现ListView上面每个Item上的Button的事件有两种方法: 1.使用final变量扩展局部变量的生命周期范围主要代码(本文最后附全部代码): [java] view plain copy //注意原本getView方法中的int position变量是非final的

奇葩问题:ListView中Item与Item中的Button不能单击问题

android中ListView是一个经常要用到的一个组件,用到该组件时经常会碰到ListView的Item和Item中的Button不能单击的问题. 本人在使用时同样也遇到过这样的情况,共有三种情况,总结如下: 情况一:焦点问题: 设置android:descendantFocusability="blocksDescendants"> 和android:focusable="false" 该情况比较常见,在网上都可以搜索到相关的解决办法,不在这过多的介绍,

RecyclerView onItemClick button和布局都有单击事件时的处理方式

RecyclerView为了给开发人员提供更大的自由度.没有默认的提供onItemClick接口. 网上有一种比較简单的实现方式 , 适用于不须要针对item里面某个button做特殊处理的情况 我眼下项目的需求是, 1.单击item,跳转到用户信息页. 2.单击加关注button,更改button状态. adapter代码例如以下 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.BaseViewHolder> { p

RecyclerView的Item的单击事件

显示效果 RecyclerView 的每个Item的点击事件并没有像ListView一样封装在组件中,需要Item的单击事件时就需要自己去实现,在Adapter中为RecyclerView添加单击事件参考如下: RecyclerView的使用方法请参考:RecyclerView的简单使用 第一步: 在RecyclerView的Adapyer中定义单击事件的回调接口: /** * 定义RecyclerView选项单击事件的回调接口 */ public interface OnItemClickLi

ListView点击事件失效(item里面有button按钮控件)解决方法

ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可以了: <Button android:layout_width="140px" android:layout_height="56px" android:text="按钮" android:textSize="28px"

Android实现GridView的item长按拖动删除实现(带动画效果)

领导这几天让做一个项目,就是可以实现像支付宝首页一样的可以长按拖动,删除的界面,以前没做过,领导让我做的时候觉得简直是老虎吃天,无从下手啊,可是领导的任务还是要实现的,没办法,就自己网上找咯,但是网上的demo五花八门无法满足我的需求,而且bug还很多,所以最后就自己实现了,说实话,这个效果困扰了我好几个星期,因为其中牵扯的知识点太多了,什么事件分发机制,动画效果,互换位置的算法,还有拖动,这些我都没有接触过,所以只有一点一点来做咯,如果大家还没有了解过这些知识点,我建议搭建先去了解一下,毕竟这