首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单击时禁用SwitchCompat动画

如何在单击时禁用SwitchCompat动画
EN

Stack Overflow用户
提问于 2021-04-21 01:57:27
回答 1查看 67关注 0票数 0

当我像这样设置选中状态时,我禁用了动画,它正在工作:

代码语言:javascript
复制
switchView.isChecked = state.isChecked
switchView.jumpDrawablesToCurrentState()

但是当我点击SwitchCompat视图时,动画就开始工作了。如何在单击时禁用SwitchCompat动画?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 04:05:07

这个问题没有确切的解决方案。你可以找到here的原因。但我们可以使用一些老生常谈的解决方案。看一下这个answer和自定义SwitchCompatFix.java类。

为了使两个私有方法可访问,这里使用了Java反射。Letter,这些方法已用于在触发时取消动画。您可以使用该Custom Switch类和下面的代码来实现所需的功能。

代码语言:javascript
复制
    switchCompatFix = findViewById(R.id.switchCompatFix);
    switchCompatFix.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
                if(!switchCompat.isChecked()) {
                    switchCompat.setChecked(true, false);
                }else {
                    switchCompat.setChecked(false, false);
                }
            }
            return true;
        }
    });

通过从onTouch()方法返回true,触摸侦听器将不会到达父SwitchComapt类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67184028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档