关闭

View.setClickable无效的问题

432人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51865次
    • 积分:1765
    • 等级:
    • 排名:千里之外
    • 原创:71篇
    • 转载:0篇
    • 译文:58篇
    • 评论:1条
    文章分类
    最新评论