1

这是未选中的样子:

图片

并检查:

图片

检查清楚与设计不匹配,所以当它被检查时,我怎样才能让它看起来像未检查?

4

2 回答 2

1

知道了!我不得不做一些研究,android如何找到轨道的较暗颜色......

switchview.setOnCheckedChangeListener(new OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            switchview.getThumbDrawable().clearColorFilter();
            int colorPrimaryDark = getResources().getColor(R.color.colorPrimaryDark);
            int r = (colorPrimaryDark >> 16) & 0xFF;
            int g = (colorPrimaryDark >> 8) & 0xFF;
            int b = (colorPrimaryDark >> 0) & 0xFF;
            r = (r - 30 < 0) ? 0 : r - 30;
            g = (g - 30 < 0) ? 0 : g - 30;
            b = (b - 30 < 0) ? 0 : b - 30;
            int darker = Color.rgb(r, g, b);
            switchview.getTrackDrawable().setColorFilter(darker, PorterDuff.Mode.SRC_IN);
        }
    });

现在选中和未选中将完全相同。

于 2015-03-30T14:30:34.217 回答
1

您可以为这两个语句使用相同的颜色对其进行着色:

    switchButton.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            isTouched = true;
            switchButton.getThumbDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);
            return false;
        }
    });
    switchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            if (isTouched) {
                isTouched = false;
                if (isChecked) {
                    switchButton.getThumbDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);
                }
                else {
                    switchButton.getThumbDrawable().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);
                }
            }
        }
    });
于 2015-03-29T16:17:11.110 回答