View.setClickable无效的问题

原创 2015年11月17日 15:49:20

View.setClickable无效的问题

问题描述

笔者最近做项目时发现button.setClickable(false)无效的问题,现在吧代码抽离出来,如下

button = (Button) findViewById(R.id.button);
button.setClickable(false);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(),"Click",Toast.LENGTH_SHORT).show();
    }
});

问题分析

笔者查了一下setOnClickListener的源码发现了问题的原因

    /**
     * Register a callback to be invoked when this view is clicked. If this view is not
     * clickable, it becomes clickable.
     *
     * @param l The callback that will run
     *
     * @see #setClickable(boolean)
     */
    public void setOnClickListener(@Nullable OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l;
    }

也就是说setOnClickable会view的clickable恢复为true的状态。以后只要在setOnClickListener后面使用setClickable即可解决问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

按位与、或、异或等运算方法

按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;       即:两位同时为“1”,结果才为“1”,否...
  • 21aspnet
  • 21aspnet
  • 2012年03月23日 15:00
  • 19359

ViewPager获取当前item的View

关于ViewPager 在使用过程中,获取当前view出现崩溃的bug修改方案: 1.造成崩溃的原因 1).view和viewpager是双向关联的 2).通过getChildA...

[Android]View.post(),android7.0(sdk24以上)不执行的问题(部分Click点击事件无效的原因)

如果在android7.0(sdk 24及以上)开发过程中,如果你的view没有通过addView添加到视图的时候,就会导致对应view的点击事件无效,以及view.post不执行,可能就是本文原因了...

Android7.0 自定义控件addView(...)无效,View的绘制流程(onMeasure、onLayout等)完全没执行的解决办法。

问题描述昨天在写一个自定义控件的时候遇到一个问题,就是我通过addView(View child) 方法添加View之后再7.0上没有显示出来,6.0上没有问题。通过AS自带的Layout Inspe...

android view第一次执行动画无效

今天遇到一个特别奇怪的问题,就是view执行动画的时候,我使用下面的这个,第一次动画竟然没有了,第二次,第三。。。就有动画。 先这个代码是我现实执行view动画时候的代码,也没有什么特别,但是那个v...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:View.setClickable无效的问题
举报原因:
原因补充:

(最多只允许输入30个字)