用xamarin获取android片段的屏幕大小

时间:2017-10-05 20:23:24

标签: c# android android-fragments xamarin

我目前正在使用xamarin开发一个针对Android的问卷调查程序,我正在使用片段来显示问题,因为有不同的问题类型。我需要确保有足够的屏幕空间来解决问题,但不幸的是我似乎无法找到任何有用的东西或找到适用于xamarin的版本。

该程序旨在检查是否有足够的空间来绘制问题,如果有,则提取问题,如果没有则会显示在下一页上。问题是动态绘制的,因此程序在运行时之前不知道是否存在空间。

我设法获得了设备的屏幕大小,但是当我为片段使用类似的代码时,它返回0。

这是我用于设备的代码,它工作正常。

Point size = new Point();
this.WindowManager.DefaultDisplay.GetSize(size);
System.Diagnostics.Debug.WriteLine("Panel " + size.ToString());

1 个答案:

答案 0 :(得分:0)

  

我设法获得了设备的屏幕大小,但是当我为片段使用类似的代码时,它返回0。

您可以像这样在片段中获取片段的大小:

public class MyFragment:Fragment
{
    ...

    public override void OnViewCreated(View view, Bundle savedInstanceState)
    {
        base.OnViewCreated(view, savedInstanceState);
        //add global layout event listener
        view.ViewTreeObserver.GlobalLayout += ViewTreeObserver_GlobalLayout;
    }

    private void ViewTreeObserver_GlobalLayout(object sender, EventArgs e)
    {
        //get the size of fragment
        var width=this.View.Width;
        var height = this.View.Height;
    }
}