2015-03-29 5 views

ответ

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); 
       } 
      } 
     } 
    }); 
+0

switch'es track не фиксируется –

+0

Непроверено, но попробуйте также добавить: switchButton.getTrackDrawable(). SetColorFilter (getResources(). GetColor (R.color.your_color), PorterDuff.Mode.SRC_IN); –

+0

, но как я могу сделать это точно, так как он не установлен? Я не хочу, чтобы это было R.color.y our_color –

1

Понял! Я должен был сделать некоторые исследования, как андроид считает, что темный цвет следа ...

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); 
     } 
    }); 

Теперь проверяемых и непроверяемых будет точно такой же.

+0

Правильный ответ +1 – sector11