如何在Android平台的Xamarin.Forms中获得幻灯片菜单视图的确切高度

时间:2017-09-14 11:53:54

标签: android android-layout xamarin xamarin.forms xamarin.android

我正在使用带有SlideOverKit(https://github.com/XAM-Consulting/SlideOverKit)的Xamarin.forms。 SlideOverKit使用HeightRequest&的静态值。 幻灯片菜单的宽度请求。我想根据菜单内容动态设置高度,为此我正在使用库和自定义渲染器。压倒一切 适用于Android的OnMeasure()。 我想通过按照下面的代码测量它们来获得子视图高度,但它总是返回父级/屏幕高度。我试过了 MeasureSpec模式的不同组合&大小但无法获得子元素的确切高度。

SlideOverKit.Droid项目中的SlideMenuDroidRenderer.cs: -

protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    int mWidth = 0, mHt = 0;
    int childWidthMeasureSpec = MeasureSpec.MakeMeasureSpec(MarginLayoutParams.WrapContent, MeasureSpecMode.Exactly);
    int childHeightMeasureSpec = MeasureSpec.MakeMeasureSpec(MarginLayoutParams.WrapContent, MeasureSpecMode.Exactly);
    for (int i = 0; i < ChildCount; i++)
    {
        Android.Views.View child = GetChildAt(i);
        if (child.Visibility != ViewStates.Gone)
        {
            child.Measure(childWidthMeasureSpec, childHeightMeasureSpec);                   
            mWidth += child.MeasuredWidth;
            mHt += child.MeasuredHeight;
        }
    }
    SetMeasuredDimension(width, height);
}

在调用OnLayout()后,我使用MeasuredHeight&amp; MeasuredWidth设置slidemenu高度&amp;宽度。

如果有人知道如何在Xamarin.Forms的自定义渲染器中获取菜单视图的确切大小?

TIA。

0 个答案:

没有答案