/// <summary>
        /// 此方法在视图View已经创建后返回的,此时view 还没有添加到父级中。
        /// 构造View后,计算view的大小,并且调用View的layout方法,完成布局
        /// </summary>
        /// <param name="view"></param>
        /// <param name="savedInstanceState"></param>
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            base.OnViewCreated(view, savedInstanceState);
            var size = _contentView.Measure(WindowSize.X / Density, WindowSize.Y / Density).Request;

            _contentView.Layout(new Xamarin.Forms.Rectangle(0, 0, size.Width, size.Height));
            _dialogViewSize = new Size((int)Math.Ceiling(size.Width * Density)
                                       , (int)Math.Ceiling(size.Height * Density));
        }
Exemple #2
0
        // Code taken from
        // http://www.michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/
        public static ViewGroup ConvertFormsToNative(Xamarin.Forms.View view, Xamarin.Forms.Rectangle size)
        {
            var renderer  = Platform.CreateRenderer(view);
            var viewGroup = renderer.ViewGroup;

            renderer.Tracker.UpdateLayout();
            var layoutParams = new ViewGroup.LayoutParams((int)size.Width, (int)size.Height);

            viewGroup.LayoutParameters = layoutParams;
            view.Layout(size);
            viewGroup.Layout(0, 0, (int)view.WidthRequest, (int)view.HeightRequest);
            return(viewGroup);
        }
Exemple #3
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            if (_dialogElement != null)
            {
                _dialogElement.OnCreated(_iDialogMsg);
            }
            var size      = new Xamarin.Forms.Size();
            var droidView = _xfView.ConvertFormsToNative(_mContext);

            _dialogSize = SetDialogSize(ref size);
            _xfView.Layout(new Xamarin.Forms.Rectangle(Xamarin.Forms.Point.Zero,
                                                       size));
            return(droidView);
        }
Exemple #4
0
        private View ConvertFormsToNative(Xamarin.Forms.View view, Xamarin.Forms.Rectangle size)
        {
            viewRenderer = Platform.CreateRendererWithContext(view, Context);
            var viewGroup = viewRenderer.View;

            viewRenderer.Tracker.UpdateLayout();

            if (view.HeightRequest > 0)
            {
                size.Height = view.HeightRequest;
            }

            var layoutParams = new ViewGroup.LayoutParams((int)(size.Width * Xamarin.Essentials.DeviceDisplay.MainDisplayInfo.Density), (int)(size.Height * Xamarin.Essentials.DeviceDisplay.MainDisplayInfo.Density));

            viewGroup.LayoutParameters = layoutParams;
            view.Layout(size);
            viewGroup.Layout(0, 0, (int)view.Width, (int)view.Height);
            return(viewGroup);
        }
 protected virtual void SetViewAndText(Toast toast)
 {
     if (_toastView != null)
     {
         //设定文本
         var dialogEle = _toastView as IDialogElement;
         dialogEle?.OnCreated(_dialogMsg);
         var droidView = _toastView.ConvertFormsToNative(_mContext);
         var winWidth  = WindowSize.X / Density;
         var winHeight = WindowSize.Y / Density;
         _toastViewSize = _toastView.Measure(winWidth, winHeight).Request;
         _toastView.Layout(new Xamarin.Forms.Rectangle(0, 0, _toastViewSize.Width, _toastViewSize.Height));
         var lastView = WrapperViewAndControlSize(droidView);
         toast.View = lastView;
     }
     else
     {
         toast.SetText(_dialogMsg.Msg);
     }
 }