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); }