Example #1
0
        public PinControl()
        {
            Label = new Label
            {
                HorizontalTextAlignment = TextAlignment.Center,
                FontSize   = 35,
                FontFamily = Helpers.OnPlatform(iOS: "Menlo-Regular", Android: "monospace", Windows: "Courier")
            };

            Entry = new ExtendedEntry
            {
                Keyboard        = Keyboard.Numeric,
                TargetMaxLength = 4,
                HideCursor      = true
            };

            Entry.BackgroundColor = Entry.TextColor = Color.Transparent;

            if (Device.RuntimePlatform == Device.Android)
            {
                Label.TextColor = Color.Black;
            }
            else
            {
                Entry.Margin = new Thickness(0, int.MaxValue, 0, 0);
            }
        }
Example #2
0
        public PinControl()
        {
            Label = new Label
            {
                HorizontalTextAlignment = TextAlignment.Center,
                FontSize   = 35,
                FontFamily = Helpers.OnPlatform(iOS: "Courier", Android: "monospace", WinPhone: "Courier")
            };

            Entry = new ExtendedEntry
            {
                Keyboard  = Keyboard.Numeric,
                MaxLength = 4,
                Margin    = new Thickness(0, int.MaxValue, 0, 0)
            };

            if (Device.RuntimePlatform == Device.Android)
            {
                Label.TextColor = Color.Black;
            }
        }
Example #3
0
        public FormEntryCell(
            string labelText,
            Keyboard entryKeyboard     = null,
            bool isPassword            = false,
            VisualElement nextElement  = null,
            bool useLabelAsPlaceholder = false,
            string imageSource         = null,
            Thickness?containerPadding = null,
            string button1             = null,
            string button2             = null)
        {
            if (!useLabelAsPlaceholder)
            {
                Label = new Label
                {
                    Text              = labelText,
                    FontSize          = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
                    Style             = (Style)Application.Current.Resources["text-muted"],
                    HorizontalOptions = LayoutOptions.FillAndExpand
                };
            }

            Entry = new ExtendedEntry
            {
                Keyboard          = entryKeyboard,
                HasBorder         = false,
                IsPassword        = isPassword,
                AllowClear        = true,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                WidthRequest      = 1,
                FontSize          = Device.GetNamedSize(NamedSize.Medium, typeof(Entry))
            };

            if (useLabelAsPlaceholder)
            {
                Entry.Placeholder = labelText;
            }

            NextElement = nextElement;

            var imageStackLayout = new StackLayout
            {
                Padding           = containerPadding ?? new Thickness(15, 10),
                Orientation       = StackOrientation.Horizontal,
                Spacing           = 10,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand
            };

            if (imageSource != null)
            {
                _tgr = new TapGestureRecognizer();

                var theImage = new CachedImage
                {
                    Source            = imageSource,
                    HorizontalOptions = LayoutOptions.Start,
                    VerticalOptions   = LayoutOptions.Center,
                    WidthRequest      = 18,
                    HeightRequest     = 18
                };
                theImage.GestureRecognizers.Add(_tgr);

                imageStackLayout.Children.Add(theImage);
            }

            var formStackLayout = new StackLayout
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand
            };

            if (!useLabelAsPlaceholder)
            {
                formStackLayout.Children.Add(Label);
            }

            formStackLayout.Children.Add(Entry);
            imageStackLayout.Children.Add(formStackLayout);

            if (!string.IsNullOrWhiteSpace(button1) || !string.IsNullOrWhiteSpace(button2))
            {
                _buttonStackLayout = new StackLayout
                {
                    Orientation     = StackOrientation.Horizontal,
                    VerticalOptions = LayoutOptions.CenterAndExpand,
                    Spacing         = 5
                };
                imageStackLayout.Children.Add(_buttonStackLayout);

                if (!string.IsNullOrWhiteSpace(button1))
                {
                    Button1 = new ExtendedButton {
                        Image = button1
                    };
                    _buttonStackLayout.Children.Add(Button1);
                    Button1.Padding         = new Thickness(0);
                    Button1.BackgroundColor = Color.Transparent;
                    Button1.VerticalOptions = LayoutOptions.End;
                }

                if (!string.IsNullOrWhiteSpace(button2))
                {
                    Button2 = new ExtendedButton {
                        Image = button2
                    };
                    _buttonStackLayout.Children.Add(Button2);
                    Button2.Padding         = new Thickness(0);
                    Button2.BackgroundColor = Color.Transparent;
                    Button2.VerticalOptions = LayoutOptions.End;
                }
            }

            if (Device.RuntimePlatform == Device.Android)
            {
                var deviceInfo = Resolver.Resolve <IDeviceInfoService>();
                if (useLabelAsPlaceholder)
                {
                    if (deviceInfo.Version < 21)
                    {
                        Entry.Margin = new Thickness(-9, 1, -9, 0);
                    }
                    else if (deviceInfo.Version == 21)
                    {
                        Entry.Margin = new Thickness(0, 4, 0, -4);
                    }
                }
                else
                {
                    Entry.AdjustMarginsForDevice();
                }

                if (containerPadding == null)
                {
                    imageStackLayout.AdjustPaddingForDevice();
                }
            }
            else if (Device.RuntimePlatform == Device.UWP)
            {
                if (_buttonStackLayout != null)
                {
                    _buttonStackLayout.Spacing = 0;
                }
            }

            View = imageStackLayout;
        }
        public FormEntryCell(
            string labelText,
            Keyboard entryKeyboard     = null,
            bool IsPassword            = false,
            VisualElement nextElement  = null,
            bool useLabelAsPlaceholder = false,
            string imageSource         = null,
            Thickness?containerPadding = null)
        {
            if (!useLabelAsPlaceholder)
            {
                Label = new Label
                {
                    Text              = labelText,
                    FontSize          = Device.GetNamedSize(NamedSize.Small, typeof(Label)),
                    Style             = (Style)Application.Current.Resources["text-muted"],
                    HorizontalOptions = LayoutOptions.FillAndExpand
                };
            }

            Entry = new ExtendedEntry
            {
                Keyboard          = entryKeyboard,
                HasBorder         = false,
                IsPassword        = IsPassword,
                AllowClear        = true,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                FontSize          = Device.GetNamedSize(NamedSize.Medium, typeof(Entry))
            };

            if (useLabelAsPlaceholder)
            {
                Entry.Placeholder = labelText;
            }

            if (nextElement != null)
            {
                Entry.ReturnType = Enums.ReturnType.Next;
                Entry.Completed += (object sender, EventArgs e) => { nextElement.Focus(); };
            }

            var imageStackLayout = new StackLayout
            {
                Padding           = containerPadding ?? new Thickness(15, 10),
                Orientation       = StackOrientation.Horizontal,
                Spacing           = 10,
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.FillAndExpand
            };

            if (imageSource != null)
            {
                var tgr = new TapGestureRecognizer();
                tgr.Tapped += Tgr_Tapped;

                var theImage = new Image
                {
                    Source            = imageSource,
                    HorizontalOptions = LayoutOptions.Start,
                    VerticalOptions   = LayoutOptions.Center
                };
                theImage.GestureRecognizers.Add(tgr);

                imageStackLayout.Children.Add(theImage);
            }

            var formStackLayout = new StackLayout
            {
                HorizontalOptions = LayoutOptions.FillAndExpand,
                VerticalOptions   = LayoutOptions.CenterAndExpand
            };

            if (Device.OS == TargetPlatform.Android)
            {
                var deviceInfo = Resolver.Resolve <IDeviceInfoService>();
                if (useLabelAsPlaceholder)
                {
                    if (deviceInfo.Version < 21)
                    {
                        Entry.Margin = new Thickness(-9, 1, -9, 0);
                    }
                    else if (deviceInfo.Version == 21)
                    {
                        Entry.Margin = new Thickness(0, 4, 0, -4);
                    }
                }
                else
                {
                    Entry.AdjustMarginsForDevice();
                }

                if (containerPadding == null)
                {
                    imageStackLayout.AdjustPaddingForDevice();
                }
            }

            if (!useLabelAsPlaceholder)
            {
                formStackLayout.Children.Add(Label);
            }

            formStackLayout.Children.Add(Entry);
            imageStackLayout.Children.Add(formStackLayout);

            Tapped += FormEntryCell_Tapped;

            View = imageStackLayout;
        }