我正在使用带有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。