如何在 Xamarin Android 的屏幕上显示全尺寸视图?

Posted

技术标签:

【中文标题】如何在 Xamarin Android 的屏幕上显示全尺寸视图?【英文标题】:How to display a View in Full Size on screen in Xamarin Android? 【发布时间】:2019-04-19 15:09:46 【问题描述】:

我无法设置与Display Size 匹配的View Size,下面是代码,它是Transparent View

 TestView testView;

    protected override void OnCreate(Bundle savedInstanceState)
    
        base.OnCreate(savedInstanceState);

        testView = new TestView(this);
        SetContentView(testView);

    

应用运行时ViewDefault Heightheight=1206 但是显示高度是1280,我使用了以下方法来设置视图大小与屏幕大小匹配,但都不起作用

不起作用

protected override void OnCreate(Bundle savedInstanceState)

    base.OnCreate(savedInstanceState);

    testView = new TestView(this);
    IWindowManager window = null;
        window = this.Application.GetSystemService(Context.WindowService).JavaCast<IWindowManager>();
        Display defaultDisplay = window.DefaultDisplay;
        DisplayMetrics display = new DisplayMetrics();
        defaultDisplay.GetRealMetrics(display);
        int width = display.WidthPixels;
        int height = display.HeightPixels;
        RelativeLayout.LayoutParams parms = new 
                       RelativeLayout.LayoutParams(width, height);
        testView.LayoutParameters = parms;
    SetContentView(testView);


结果:

不起作用:

protected override void OnCreate(Bundle savedInstanceState)

    base.OnCreate(savedInstanceState);

    testView = new TestView(this);
    SetContentView(testView);
    if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
        

            Window.SetFlags(WindowManagerFlags.LayoutNoLimits,
                              WindowManagerFlags.LayoutNoLimits);
        



<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowTranslucentStatus">true</item>

结果

如何设置View的Display高度?

【问题讨论】:

我认为您应该阅读这里:developer.android.com/training/system-ui/… 并简单地将 Java 代码转换为 C# 对应代码 【参考方案1】:

您需要在清单文件中声明您的活动应该是全屏的:

<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

如果您想通过代码获取它,只需在活动的 onCreate 方法中使用这些行:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

或将以下行添加到 style.xml 文件中

 //your theme
 <style name="Theme.AppCompat.Transparent.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
      //XML lines for full screen
      <item name="android:windowNoTitle">true</item>
      <item name="android:windowFullscreen">true</item>
 </style>

如需更多帮助,请查看此答案: Fullscreen Activity in Android?

【讨论】:

以上是关于如何在 Xamarin Android 的屏幕上显示全尺寸视图?的主要内容,如果未能解决你的问题,请参考以下文章

MvvmCross Xamarin Android 在初始屏幕上挂起并带有链接

如何将ImageView放在Xamarin.Android应用程序中,根据设备屏幕大小自行调整大小?

Xamarin - 在android中截取屏幕截图

如何验证照片捕获屏幕在 Xamarin UITest 中是不是打开?

在 xamarin.android 中管理屏幕旋转时的片段外观

与使用 xamarin 的设计器屏幕相比,Android 设备上的视图位置不同