private void UpdateColor() { if (_nativeView == null || _backgroundElement == null || _visualElement == null) { return; } var color = _backgroundElement.Color == Color.Default ? _visualElement.BackgroundColor == Color.Default ? Color.Default : _visualElement.BackgroundColor : _backgroundElement.Color; if (color == Color.Default) { return; } switch (_nativeView) { case MaterialCardView mCardView: mCardView.CardBackgroundColor = ColorStateList.ValueOf(color.ToAndroid()); break; case Chip mChip: mChip.ChipBackgroundColor = ColorStateList.ValueOf(color.ToAndroid()); break; case MaterialButton mButton: var primaryColor = color.ToAndroid(); var alphaPrimaryColor = new global::Android.Graphics.Color( primaryColor.R, primaryColor.G, primaryColor.B, (byte)(0.12 * 255)); ViewCompat.SetBackgroundTintList(mButton, new ColorStateList(ButtonStates, new int[] { primaryColor, alphaPrimaryColor })); break; default: _nativeView.SetColor(color); break; } }