Xamarin Androidでは、OnMeasure
メソッドが呼び出された後にのみ、ビューの幅と高さを取得できます。 OnLayout
メソッドはOnMeasure
の後に呼び出されます。だからOnLayout
メソッドで幅と高さを取得することができます。
class MyRender: PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
System.Diagnostics.Debug.Write("OnLayout start");
base.OnLayout(changed, l, t, r, b);
for (int i = 0; i < ChildCount; i++)
{
Android.Views.View view = GetChildAt(i);
int height = view.Height;
int width = view.Width;
System.Diagnostics.Debug.Write("height=" + height);
System.Diagnostics.Debug.Write("width=" + width);
}
System.Diagnostics.Debug.Write("OnLayout end");
}
}
あなたは幅と高さを取得する前OnMeasure
が呼び出されている、またはあなたが常に0