Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
        protected virtual void UpdateBackgroundColor()
        {
            Color color = CellBase?.GetBackground() ?? Color.Transparent;

            if (CellBase is AiEntryCell _)
            {
                SetBackgroundColor(color.ToAndroid());
            }
            else
            {
                SetBackgroundColor(color.ToAndroid());
            }

            // SetBackgroundColor(color.ToAndroid());
        }
Esempio n. 6
0
        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());
        }
Esempio n. 12
0
        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);
            }
        }
Esempio n. 17
0
        public void SetStroke(double strokeWidth, Color strokeColor)
        {
            _strokePaint.StrokeWidth = (int)_context.ToPixels(strokeWidth) * 2;

            if (_strokeColors == null)
            {
                _strokePaint.Color = strokeColor.ToAndroid();
            }

            InvalidateSelf();
        }
Esempio n. 18
0
        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);
        }
Esempio n. 19
0
 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());
         }
     }
 }
Esempio n. 20
0
        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);
     }
 }
Esempio n. 22
0
        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);
        }
Esempio n. 23
0
        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();
        }
Esempio n. 25
0
 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);
     }
 }
Esempio n. 26
0
        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;
            }
        }
Esempio n. 27
0
        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;
        }
Esempio n. 28
0
        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);
     }
 }
Esempio n. 30
0
 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);
        }