Exemple #1
0
        public override void OnGlobalLayout()
        {
            if (Build.VERSION.SdkInt >= BuildVersionCodes.JellyBean)
            {
                ViewTreeObserver.RemoveOnGlobalLayoutListener(this);
            }
            else
            {
                //noinspection deprecation
                ViewTreeObserver.RemoveGlobalOnLayoutListener(this);
            }

            int spacing = Resources.GetDimensionPixelSize(Resource.Dimension.bible_nav_bible_book_grid_spacing);
            int width   = Resources.GetDimensionPixelSize(Resource.Dimension.bible_nav_chapter_grid_width);
            int columns = NumColumns;
            int i;

            if (columns >= 10)
            {
                i = 10 * (width + spacing);
            }
            else
            {
                i = columns * (width + spacing);
            }

            ViewGroup localViewGroup = (ViewGroup)Parent;

            if (localViewGroup != null)
            {
                int m = Resources.GetDimensionPixelSize(Resource.Dimension.bible_nav_chapter_horizontal_padding);

                if (columns >= 10)
                {
                    columns = localViewGroup.MeasuredWidth - i - m;
                    if (!PaddingCorrection(localViewGroup, i, spacing, m, columns, width))
                    {
                        SetPadding(m, m, columns, m);
                    }
                }
                else
                {
                    columns = (localViewGroup.MeasuredWidth - i) / 2;
                    if (!PaddingCorrection(localViewGroup, i, spacing, m, columns, width))
                    {
                        SetPadding(columns, m, columns, m);
                    }
                }
            }

            ViewTreeObserver.AddOnGlobalLayoutListener(new CenteredGridViewListener(this));
        }
 private void OnViewTreeObserverOnGlobalFocusChange(object sender, ViewTreeObserver.GlobalFocusChangeEventArgs args)
 {
     if (args.NewFocus == null)
     {
         _viewWithLastFocus = null;
         return;
     }
     if (args.NewFocus != ListView)
     {
         //check if it's one of our's
         var parent = args.NewFocus.Parent;
         while (parent != null && parent != parent.Parent)
         {
             if (parent == ListView)
             {
                 _viewWithLastFocus = args.NewFocus;
                 break;
             }
             parent = parent.Parent;
         }
     }
 }
		private void PSTSViewTreeObserverOnPreDraw(object sender, ViewTreeObserver.PreDrawEventArgs preDrawEventArgs)
		{
			FinalTabsY = Utils.DpToPx(-2, Context);
			MPagerSlidingTabStrip.ViewTreeObserver.PreDraw -= PSTSViewTreeObserverOnPreDraw;
		}
		private void ToolbarViewTreeObserverOnPreDraw(object sender, ViewTreeObserver.PreDrawEventArgs preDrawEventArgs)
		{
			//rotation fix, if not set, originalTitleY = Na
			ViewHelper.SetTranslationY(MLogo, 0);
			ViewHelper.SetTranslationX(MLogo, 0);

			OriginalTitleY = ViewHelper.GetY(MLogo);
			OriginalTitleX = ViewHelper.GetX(MLogo);

			OriginalTitleHeight = MLogo.Height;
			FinalTitleHeight = Utils.DpToPx(21, Context);

			//the final scale of the logo
			FinalScale = FinalTitleHeight / OriginalTitleHeight;

			FinalTitleY = (Toolbar.PaddingTop + Toolbar.Height) / 2f - FinalTitleHeight / 2 - (1 - FinalScale) * FinalTitleHeight;

			//(mLogo.getWidth()/2) *(1-finalScale) is the margin left added by the scale() on the logo
			//when logo scaledown, the content stay in center, so we have to anually remove the left padding
			FinalTitleX = Utils.DpToPx(52f, Context) - (MLogo.Width / 2f) * (1 - FinalScale);

			ToolbarLayout.ViewTreeObserver.PreDraw -= ToolbarViewTreeObserverOnPreDraw;
		}
		private void ViewTreeObserverOnPreDraw(object sender, ViewTreeObserver.PreDrawEventArgs preDrawEventArgs)
		{
			SetMaterialHeight();
			ViewTreeObserver.PreDraw -= ViewTreeObserverOnPreDraw;
		}
 void ViewTreeObserver.IOnGlobalLayoutListener.OnGlobalLayout()
 {
     EmitGlobalLayout ();
     if (OneTime) {
         if (_wasRaise)
             return;
         _wasRaise = true;
         RemoveLisener ();
         return;
     }
     _viewTreeObserver = _view.ViewTreeObserver;
 }
 private void RemoveLisener()
 {
     if (_wasRemoved)
         return;
     if (_view == null)
         return;
     try {
         _viewTreeObserver = _view.ViewTreeObserver;
         if (PhoneFactory.Api > 15)
             _viewTreeObserver.RemoveOnGlobalLayoutListener (this);
         else {
     #pragma warning disable 0618
             _viewTreeObserver.RemoveGlobalOnLayoutListener (this);
     #pragma warning restore 0618
         }
         _wasRemoved = true;
         _view = null;
         _viewTreeObserver = null;
     } catch (Exception ex) {
         Log.Warn (Tag, string.Format ("Failed to remove lisenere:{0}", ex.Message));
     }
 }
 private void Init()
 {
     _viewTreeObserver = _view.ViewTreeObserver;
     _viewTreeObserver.AddOnGlobalLayoutListener (this);
 }