[英]How to make SwitchCompat not change colors when checked?
這是未經檢查的樣子:
並檢查:
明顯不匹配的設計,那么如何使它看起來像未經檢查的設計?
您可以為這兩個語句使用相同的顏色進行着色:
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);
}
}
}
});
得到它了! 我不得不做一些研究,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);
}
});
現在選中和未選中將完全相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.