public static void SetBorder(this AView view, Context context, VisualElement element, Color color, double width) { var borderWidth = (int)context.ToPixels(width); switch (view.Background) { case GradientDrawable gradientDrawable: gradientDrawable.SetStroke(borderWidth, ColorStateList.ValueOf(color.ToAndroid())); break; case GradientStrokeDrawable gradientStrokeDrawable: gradientStrokeDrawable.SetStroke(borderWidth, color); break; case PaintDrawable paintDrawable: var paint = paintDrawable.Paint; paint.AntiAlias = true; paint.Color = color.ToAndroid(); paint.StrokeWidth = borderWidth; paint.SetStyle(Paint.Style.Stroke); if (element is IGradientElement gradientElement) { view.SetPaintGradient(gradientElement.Gradients, gradientElement.Angle); } break; default: view.Background?.Dispose(); var newGradientDrawable = new GradientDrawable(); newGradientDrawable.SetStroke(borderWidth, ColorStateList.ValueOf(color.ToAndroid())); newGradientDrawable.SetColor(element.BackgroundColor.ToAndroid()); view.Background = newGradientDrawable; break; } }
void SetOverlay(Xamarin.Forms.Color color) { var formsImage = (Xamarin.Forms.Image)Element; if (formsImage?.Source == null) { return; } try { var drawable = ((ImageView)Control).Drawable.Mutate(); drawable.SetColorFilter(color.ToAndroid(), PorterDuff.Mode.SrcAtop); drawable.Alpha = color.ToAndroid().A; ((ImageView)Control).SetImageDrawable(drawable); ((IVisualElementController)Element).NativeSizeChanged(); } catch (NullReferenceException) { return; } catch (ObjectDisposedException) { return; } }
private Drawable CreateBackgroundButton() { var layer1 = BackgroundExtension.CreateBackgroundGradient(button.StartColor.ToAndroid(), button.EndColor.ToAndroid(), button.CenterColor.ToAndroid(), button.CornerRadius, button.Angle.ToAndroid()); var layer1Disabled = BackgroundExtension.CreateBackgroundGradient(Android.Graphics.Color.Gray, Android.Graphics.Color.Gray, Android.Graphics.Color.Gray, button.CornerRadius, button.Angle.ToAndroid()); var layer2Temp = BackgroundExtension.CreateBackgroundGradient(backgroundColor.ToAndroid(), backgroundColor.ToAndroid(), backgroundColor.ToAndroid(), button.CornerRadius, button.Angle.ToAndroid()); int borderWidth = (int)button.BorderWidth; var layer2 = new InsetDrawable(layer2Temp, borderWidth, borderWidth, borderWidth, borderWidth); Drawable[] drawables = new Drawable[] { layer1, layer2 }; Drawable[] drawablesDisabled = new Drawable[] { layer1Disabled, layer2 }; LayerDrawable layer = new LayerDrawable(drawables); LayerDrawable layerDisabled = new LayerDrawable(drawablesDisabled); var statesListDrawable = new StateListDrawable(); statesListDrawable.AddState(new int[] { -Android.Resource.Attribute.StateEnabled }, layerDisabled); statesListDrawable.AddState(new int[] { Android.Resource.Attribute.StatePressed }, layer); statesListDrawable.AddState(new int[] { Android.Resource.Attribute.StateEnabled }, layer); return(statesListDrawable); }
private void OnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs e) { if (this.Control.Checked) { this.Element.IsToggled = true; this.Control.TrackDrawable.SetColorFilter(trueColor.ToAndroid(), PorterDuff.Mode.Multiply); this.Control.ThumbDrawable.SetColorFilter(trueColor.ToAndroid(), PorterDuff.Mode.Multiply); } else { this.Element.IsToggled = false; this.Control.TrackDrawable.SetColorFilter(falseColor.ToAndroid(), PorterDuff.Mode.Multiply); this.Control.ThumbDrawable.SetColorFilter(falseColor.ToAndroid(), PorterDuff.Mode.Multiply); } }
protected virtual void UpdateBackgroundColor() { Color color = CellBase?.GetBackground() ?? Color.Transparent; if (CellBase is AiEntryCell _) { SetBackgroundColor(color.ToAndroid()); } else { SetBackgroundColor(color.ToAndroid()); } // SetBackgroundColor(color.ToAndroid()); }
private void ProcessText() { if (Control == null || Element == null) { return; } Xamarin.Forms.Color linkColor = ((HtmlLabel)Element).LinkColor; if (!linkColor.IsDefault) { Control.SetLinkTextColor(linkColor.ToAndroid()); } Control.SetIncludeFontPadding(false); var isRtl = Device.FlowDirection == FlowDirection.RightToLeft; var styledHtml = new RendererHelper(Element, Control.Text, Device.RuntimePlatform, isRtl).ToString(); /* * Android's TextView doesn't support lists. * List tags must be replaces with custom tags, * that it will be renderer by a custom tag handler. */ styledHtml = styledHtml ?.ReplaceTag(_tagUlRegex, ListTagHandler.TagUl) ?.ReplaceTag(_tagOlRegex, ListTagHandler.TagOl) ?.ReplaceTag(_tagLiRegex, ListTagHandler.TagLi); if (styledHtml != null) { SetText(Control, styledHtml); } }
protected override void OnAttached() { if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean) { _trueColor = (Color)Element.GetValue(ChangeColorEffect.TrueColorProperty); _falseColor = (Color)Element.GetValue(ChangeColorEffect.FalseColorProperty); ((SwitchCompat)Control).CheckedChange += OnCheckedChange; //Supported formats for Parse are: #RRGGBB #AARRGGBB 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 'yellow', 'lightgray', 'darkgray' ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(_falseColor.ToAndroid(), PorterDuff.Mode.Multiply); } //TODO: Glenn - From lollipop mr1 you can also use the TintList instead of working with events... not sure what the best approach is //if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.LollipopMr1) //{ // ColorStateList buttonStates = new ColorStateList(new int[][] // { // new int[] {Android.Resource.Attribute.StateChecked}, // new int[] {-Android.Resource.Attribute.StateEnabled}, // new int[] {} // }, // new int[] // { // Android.Graphics.Color.Red, // Android.Graphics.Color.Blue, // Android.Graphics.Color.Green // } // ); // ((SwitchCompat)Control).ThumbDrawable.SetTintList(buttonStates); //} }
public static void UpdateFromFormsControl(this TextView textView, string text, Color formsColor, Font formsFont, TextAlignment textAlignment) { textView.Text = text; textView.SetTextColor(formsColor.ToAndroid(Color.Default)); textView.UpdateFont(formsFont); textView.Gravity = textAlignment.ToNative(); }
void ApplyBorder(int width, Color color, int cornerRadius) { var topLeftCorner = Context.ToPixels(cornerRadius); var topRightCorner = Context.ToPixels(cornerRadius); var bottomLeftCorner = Context.ToPixels(cornerRadius); var bottomRightCorner = Context.ToPixels(cornerRadius); var cornerRadii = new[] { topLeftCorner, topLeftCorner, topRightCorner, topRightCorner, bottomRightCorner, bottomRightCorner, bottomLeftCorner, bottomLeftCorner, }; GradientDrawable gd = new GradientDrawable(); gd.SetCornerRadii(cornerRadii); //gd.SetCornerRadius(cornerRadius); gd.SetStroke(width, color.ToAndroid()); this.Control.Background = gd; }
GradientDrawable GetBorderDrawable(int width, Color borderColor, int cornerRadius) { GradientDrawable gd = new GradientDrawable(); gd.SetCornerRadius(cornerRadius); gd.SetStroke(width, borderColor.ToAndroid()); return(gd); }
private Android.Graphics.Color GetSpanColor(Xamarin.Forms.Color color) { if (color == Xamarin.Forms.Color.Default) { return(new Android.Graphics.Color(Control.TextColors.DefaultColor)); } return(color.ToAndroid()); }
public static void UpdateBorder(this Android.Views.View nativeControl, Xamarin.Forms.Color color, int thickness) { var backgroundGradient = nativeControl.Background as GradientDrawable; if (backgroundGradient != null) { var relativeBorderThickness = thickness * 3; backgroundGradient.SetStroke(relativeBorderThickness, color.ToAndroid()); } }
static Bitmap ViewToBitMap(Android.Views.View view, Xamarin.Forms.Color backgroundColor) { var bitmap = Bitmap.CreateBitmap(view.Width, view.Height, Bitmap.Config.Argb8888); using var canvas = new Canvas(bitmap); canvas.DrawColor(backgroundColor.ToAndroid()); view.Draw(canvas); return(bitmap); }
private void DrawProgressRing(Canvas canvas, float progress, Color ringBaseColor, Color ringProgressColor) { _paint.Color = ringBaseColor.ToAndroid(); canvas.DrawArc(_ringDrawArea, 270, 360, false, _paint); _paint.Color = ringProgressColor.ToAndroid(); canvas.DrawArc(_ringDrawArea, 270, 360 * progress, false, _paint); }
public static void UpdateBorder(this View nativeControl, Color color, int thickness) { var backgroundGradient = nativeControl.Background as GradientDrawable; if (backgroundGradient != null) { var relativeBorderThickness = thickness*3; backgroundGradient.SetStroke(relativeBorderThickness, color.ToAndroid()); } }
protected override void OnElementChanged(ElementChangedEventArgs <Editor> e) { base.OnElementChanged(e); if (Control != null) { Xamarin.Forms.Color customColor = Xamarin.Forms.Color.White; Control.Background.SetColorFilter(customColor.ToAndroid(), PorterDuff.Mode.SrcAtop); } }
public void SetStroke(double strokeWidth, Color strokeColor) { _strokePaint.StrokeWidth = (int)_context.ToPixels(strokeWidth) * 2; if (_strokeColors == null) { _strokePaint.Color = strokeColor.ToAndroid(); } InvalidateSelf(); }
public static void SetBorder(this MaterialCardView view, Context context, Color color, double width) { if (color != Color.Default) { view.StrokeColor = color == Color.White ? new global::Android.Graphics.Color(254, 254, 254) : color.ToAndroid(); } view.StrokeWidth = (int)context.ToPixels(width); }
private void SetTabColors() { for (int tabPosition = 0; tabPosition < this.Element.Children.Count; ++tabPosition) { Xamarin.Forms.Color tabColor = BottomBarPageExtensions.GetTabColor((BindableObject)this.Element.Children[tabPosition]); if (tabColor != Xamarin.Forms.Color.Transparent) { this._bottomBar.MapColorForTab(tabPosition, tabColor.ToAndroid()); } } }
public void SetColor(Color color) { if (color == Color.Default) { return; } Paint.Color = color.ToAndroid(); InvalidateSelf(); }
void UpdateToolbarTextColor(AppCompatTextView textView, Xamarin.Forms.Color?titleColor, ColorStateList defaultColorStateList) { if (titleColor != null) { textView.SetTextColor(titleColor?.ToAndroid() ?? Android.Graphics.Color.White); } else { textView.SetTextColor(defaultColorStateList); } }
protected override void OnElementChanged(ElementChangedEventArgs <Entry> e) { base.OnElementChanged(e); if (e.NewElement != null) { var view = (CustomEntry)Element; if (view.IsCurvedCornersEnabled) { // creating gradient drawable for the curved background var _gradientBackground = new GradientDrawable(); _gradientBackground.SetShape(ShapeType.Line); _gradientBackground.SetColor(view.BackgroundColor.ToAndroid()); //Control.SetPadding(0, 0, 0, 0); // Thickness of the stroke line //_gradientBackground.SetStroke(view.BorderWidth, view.BorderColor.ToAndroid()); var blueHex = ColorConverters.FromHex("#D4D5D9"); Xamarin.Forms.Color xfColour = blueHex; Android.Graphics.Color greyColor = xfColour.ToAndroid(); _gradientBackground.SetStroke(view.BorderWidth, greyColor); // Radius for the curves //_gradientBackground.SetCornerRadius( // DpToPixels(this.Context, Convert.ToSingle(view.CornerRadius))); // set the background of the //Control.SetBackground(_gradientBackground); } // Set padding for the internal text from border //Control.SetPadding( // (int)DpToPixels(this.Context, Convert.ToSingle(12)), Control.PaddingTop, // (int)DpToPixels(this.Context, Convert.ToSingle(12)), Control.PaddingBottom); } if (Control == null || e.NewElement == null) { return; } if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) { Control.BackgroundTintList = ColorStateList.ValueOf(Android.Graphics.Color.White); } else { Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcAtop); } //IntPtr IntPtrtextViewClass = JNIEnv.FindClass(typeof(TextView)); //IntPtr mCursorDrawableResProperty = JNIEnv.GetFieldID(IntPtrtextViewClass, "mCursorDrawableRes", "I"); //JNIEnv.SetField(Control.Handle, mCursorDrawableResProperty, Resource.Drawable.my_cursor); }
private void UpdateTabColor(Page page, Xamarin.Forms.Color color, BottomNavigationItemView itemView) { if (itemView == null) { return; } var nativeColor = ColorStateList.ValueOf(color.ToAndroid()); itemView.SetIconTintList(nativeColor); itemView.SetTextColor(nativeColor); }
public void ShowOverlay(string message, Xamarin.Forms.Color backgroundColor, float backgroundOpacity) { var alpha = (int)(255 * backgroundOpacity); dialog = new Dialog(Ctx, Resource.Style.ThemeNoTitleBar); Drawable d = new ColorDrawable(backgroundColor.ToAndroid()); d.SetAlpha(alpha); dialog.Window.SetBackgroundDrawable(d); var layout = new LinearLayout(Ctx); layout.Orientation = Android.Widget.Orientation.Vertical; layout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent); var header = new LinearLayout(Ctx); var headerParameter = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent); headerParameter.Weight = 1; header.LayoutParameters = headerParameter; var prg = new Android.Widget.ProgressBar(Ctx); prg.Indeterminate = true; prg.IndeterminateDrawable.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.Multiply); var parameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent); parameters.Gravity = Android.Views.GravityFlags.Center; parameters.SetMargins(0, 10, 0, 10); prg.LayoutParameters = parameters; var txtField = new TextView(Ctx); txtField.Text = message; txtField.TextSize = 12;// 22; txtField.SetTextColor(Android.Graphics.Color.White); txtField.LayoutParameters = parameters; var footer = new LinearLayout(Ctx); var footerParameter = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent, LinearLayout.LayoutParams.WrapContent); footerParameter.Weight = 1; footer.LayoutParameters = footerParameter; layout.AddView(header); layout.AddView(prg); layout.AddView(txtField); layout.AddView(footer); dialog.SetContentView(layout); dialog.Show(); }
private void OnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs checkedChangeEventArgs) { if (checkedChangeEventArgs.IsChecked) { ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(_trueColor.ToAndroid(), PorterDuff.Mode.Multiply); //((SwitchCompat) Control).TrackDrawable.SetColorFilter(Android.Graphics.Color.Green, PorterDuff.Mode.Multiply); } else { ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(_falseColor.ToAndroid(), PorterDuff.Mode.Multiply); //((SwitchCompat)Control).TrackDrawable.SetColorFilter(Android.Graphics.Color.Green, PorterDuff.Mode.Multiply); } }
public void SetColor(Xamarin.Forms.Color c) { if (!equal(c, _clr_xf)) { _clr_xf = c; var ac = c.ToAndroid(); _paints.Stroke.Color = ac; _paints.Fill.Color = ac; _paints.Text.Color = ac; } }
void OnCheckedChange(object sender, CompoundButton.CheckedChangeEventArgs checkedChangeEventArgs) { if (checkedChangeEventArgs.IsChecked) { ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(trueColor.ToAndroid(), PorterDuff.Mode.Multiply); } else { ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(falseColor.ToAndroid(), PorterDuff.Mode.Multiply); } ((Forms.Switch)Element).IsToggled = checkedChangeEventArgs.IsChecked; }
protected override void OnAttached() { if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBean) { _trueColor = (Color)Element.GetValue(RoutingEffects.SwitchChangeColor.TrueColorProperty); _falseColor = (Color)Element.GetValue(RoutingEffects.SwitchChangeColor.FalseColorProperty); ((SwitchCompat)Control).CheckedChange += OnCheckedChange; //Supported formats for Parse are: #RRGGBB #AARRGGBB 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 'yellow', 'lightgray', 'darkgray' ((SwitchCompat)Control).ThumbDrawable.SetColorFilter(_falseColor.ToAndroid(), PorterDuff.Mode.Multiply); } }
public static void SetNumberPickerDividerColor(NumberPicker numberPicker, Xamarin.Forms.Color color) { try { Java.Lang.Reflect.Field field = numberPicker.Class.GetDeclaredField("mSelectionDivider"); field.Accessible = true; field.Set(numberPicker, new ColorDrawable(color.ToAndroid())); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("SetNumberPickerDividerColor failed.", e); } }
private void ChangeColor() { if (_thisSwitch.Checked) { _thisSwitch.ThumbDrawable.SetColorFilter(xfMainColor.ToAndroid(), PorterDuff.Mode.SrcAtop); _thisSwitch.TrackDrawable.SetColorFilter(xfSelectColor.ToAndroid(), PorterDuff.Mode.SrcAtop); } else { _thisSwitch.TrackDrawable.SetColorFilter(global::Android.Graphics.Color.LightGray, PorterDuff.Mode.SrcAtop); _thisSwitch.ThumbDrawable.SetColorFilter(global::Android.Graphics.Color.Gray, PorterDuff.Mode.SrcAtop); } }
protected override void DispatchDraw(Canvas canvas) { var bounds = new RectF(0, 0, Width, Height); if (_hasBackgroundGradient) { var fillPaint = new Paint(PaintFlags.AntiAlias); var shader = new LinearGradient(0, 0, 0, this.Height, _startColor.ToAndroid(), _endColor.ToAndroid(), Shader.TileMode.Clamp); fillPaint.SetShader(shader); canvas.DrawRect(bounds, fillPaint); } base.DispatchDraw(canvas); }
protected virtual ColorStateList GetItemTextColorStates() { if (_originalTabTextColors == null) { _originalTabTextColors = bottombar.ItemTextColor; } Color barItemColor = BarItemColor; Color barTextColor = Element.BarTextColor; Color barSelectedItemColor = BarSelectedItemColor; if (barItemColor.IsDefault && barTextColor.IsDefault && barSelectedItemColor.IsDefault) { return(_originalTabTextColors); } if (_newTabTextColors != null) { return(_newTabTextColors); } int checkedColor; int defaultColor; if (!barTextColor.IsDefault) { checkedColor = barTextColor.ToAndroid().ToArgb(); defaultColor = checkedColor; } else { defaultColor = barItemColor.ToAndroid().ToArgb(); if (barItemColor.IsDefault && _originalTabTextColors != null) { defaultColor = _originalTabTextColors.DefaultColor; } checkedColor = defaultColor; if (!barSelectedItemColor.IsDefault) { checkedColor = barSelectedItemColor.ToAndroid().ToArgb(); } } _newTabTextColors = GetColorStateList(defaultColor, checkedColor); return(_newTabTextColors); }