예제 #1
0
        public IVisualElementRenderer Convert(Xamarin.Forms.View source, Xamarin.Forms.VisualElement valid)
        {
            IVisualElementRenderer render = (IVisualElementRenderer)source.GetValue(RendererProperty);
            if (render == null)
            {
                render = RendererFactory.GetRenderer(source);
                source.SetValue(RendererProperty, render);
                if (valid != null)
                {
                    var p = PlatformProperty.GetValue(valid);
                    if (p != null)
                    {
                        PlatformProperty.SetValue(source, p);
                        IsPlatformEnabledProperty.SetValue(source, true);
                    }
                }
            }

            return render;
        }
예제 #2
0
        public IXFPopupCtrl CreateDropDown(Xamarin.Forms.View anchor, Xamarin.Forms.View drop)
        {
            CustomPopup dlg = null;
            //first try to get the PopupHolderRenderer
            //first try to get the PopupHolderRenderer
            if(anchor == null || drop == null){
                return null;
            }

            var anchorRender = anchor.GetValue(RendererProperty) as UIView;
            if (anchorRender == null) {
                return null;
            }

            var render = Convert(drop, anchor);

            if (render == null) {
                return null;
            }

            if (render != null) {

                var size = drop.GetSizeRequest(anchorRender.Bounds.Width, XFPopupConst.SCREEN_HEIGHT);
                var width = anchorRender.Bounds.Width;
                var height = (int)size.Request.Height;
                if (height > (XFPopupConst.SCREEN_HEIGHT * 3/ 4))
                {
                    height = (int)(XFPopupConst.SCREEN_HEIGHT * 3/ 4);
                }

                //important
                drop.Layout(new Xamarin.Forms.Rectangle(0, 0, width - 2*padding, height));

                var native = render as UIKit.UIView;
                native.Frame = new CoreGraphics.CGRect (padding, padding, width - 2*padding, height);

                dlg = new CustomPopup(native, true, width, height + 2*padding, ShowType.DropDown,anchorRender);

            }
            return dlg;
        }
예제 #3
0
        public IXFPopupCtrl CreateDropDown(Xamarin.Forms.View anchor, Xamarin.Forms.View drop)
        {
            CustomDropDown dropctr = null;
            //get the renderer of anchor
            if (anchor != null) {
                var ar = anchor.GetValue(RendererProperty);
                if (ar != null) {
                    var dropView = Convert(drop, anchor);

                    if (dropView == null) {
                        return null;
                    }

                    double w = (int)anchor.Width;
                    double h = XFPopupConst.SCREEN_HEIGHT/2;
                    drop.WidthRequest = w;
                    var size = drop.GetSizeRequest(w, XFPopupConst.SCREEN_HEIGHT / 2);
                    if (size.Request.Height < h) {
                        h = size.Request.Height;
                    }

                    drop.Layout(new Rectangle(0, 0, w, h));

                    float density = Forms.Context.Resources.DisplayMetrics.Density;
                    w = w * density;
                    h = h * density;

                    var native = dropView as Android.Views.View;
                    native.LayoutParameters = new ViewGroup.LayoutParams((int)w, (int)h);

                    dropctr = new CustomDropDown(ar as Android.Views.View, native, (int)w + 4, (int)h+10);

                }

            }

            return dropctr;
        }