Android Xamarin.Forms.193-AppCompat-全屏-无操作栏

Android Xamarin.Forms.193-AppCompat-全屏-无操作栏,android,xamarin,xamarin.forms,Android,Xamarin,Xamarin.forms,当MainActivity从FormsApplicationActivity继承时,获得全屏显示(没有标题栏/状态栏/导航栏)不是什么问题。 但是你不能把它作为主题等等 当前VS解决方案模板可从FormsAppCompatActivity继承,您可以将其作为主题。但是状态栏又回来了。 它不应该仅仅为了得到一个完整页面的应用程序而花费数天的时间来查看过时的操作页面和堆积如山的尝试和错误,以及这些不同的“技巧”的无数排列。我用2011年曾经奏效的例子来回答谷歌的每一个搜索、每一个堆栈溢出、其他问题等

当MainActivity从FormsApplicationActivity继承时,获得全屏显示(没有标题栏/状态栏/导航栏)不是什么问题。 但是你不能把它作为主题等等

当前VS解决方案模板可从
FormsAppCompatActivity
继承,您可以将其作为主题。但是状态栏又回来了。 它不应该仅仅为了得到一个完整页面的应用程序而花费数天的时间来查看过时的操作页面和堆积如山的尝试和错误,以及这些不同的“技巧”的无数排列。我用2011年曾经奏效的例子来回答谷歌的每一个搜索、每一个堆栈溢出、其他问题等等。但我找不到或想不出如何在2017年的今天在现代VS解决方案上实现这一点

也许我只是尝试了很多不同的方法,我迷路了,或者有很多不同的方法相互冲突,但是有人能告诉我如何在一个基本的“欢迎来到Xamarin”类应用程序上,如何让它全屏运行吗?我离得很近,但不太近。我所能做的就是在状态栏中没有内容,但状态栏本身仍然存在。我不敢相信像想要一个全屏应用程序这样常见的事情会让我大吃一惊,但事实确实如此。

摆脱导航栏 MainActivity.cs 在
活动
属性中设置主题 设置windows标志 (很明显,为了让这项工作发挥作用,需要进行大量的努力和排列)

然后是主题本身

真的
假的
真的
Xamarin论坛上的原始帖子
没有回复-我不敢相信这是个谜。

隐藏标题栏和动作栏的代码实际上是有效的,您看到的动作栏是由Xamarin.Forms视图渲染器创建的视图。通过检查DDMS的名称,您可以看到以下视图:

由于我们无法修改xamarin表单的源代码,因此这里有一个解决此问题的变通方法。创建如下样式:

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
  <item name="windowNoTitle">true</item>
  <item name="windowActionBar">false</item>
  <item name="android:windowFullscreen">true</item>

  <!--colorPrimaryDark is used for the status bar-->
  <item name="colorPrimaryDark">#fff9f9f9</item>
</style>
这只是一个解决方法,操作栏的视图仍将占据布局中的空间


我之所以使用彩色
#fff9f9f9
,我只是检查了一下,
项目似乎就在我身边,我没有找到Xamarin的源代码。表单,你可以试试。

谢谢你的回复-尤其是在这么早的时候(至少在我的时区)>这只是一个解决办法,操作栏的视图仍将占据布局中的空间。<这是我试图解决的问题的核心。在我的“真实”项目中,我将该条涂成黑色,使其与公司选择的设备的黑色挡板消失/混合。我还取消了打开通知控件等的下拉行为。ViewRenderer参考是一个很好的提示,也许我可以使用CustomRenderer做些什么。如果成功,我将保持线程意识。@ClintStraurent,不客气,我怀疑这是否可以自定义。选中的源代码,它将始终在代码隐藏中创建
\u statusBarUnderlay
。这就是为什么我到处说这个词。
[Activity(Label = "RpxOne",
          Icon = "@drawable/icon",
          Theme = "@style/FullScreen",
          MainLauncher = true,
          ConfigurationChanges = ConfigChanges.ScreenSize |
                                 ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    WindowManagerFlags _originalFlags;
    protected override void OnCreate(Bundle bundle)
    {
        SupportRequestWindowFeature((int)WindowFeatures.NoTitle);
        //RequestWindowFeature(WindowFeatures.NoTitle);
        //TabLayoutResource = Resource.Layout.Tabbar;
        //ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);

        //if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        //{
        //    // Kill status bar underlay added by FormsAppCompatActivity
        //    // Must be done before calling FormsAppCompatActivity.OnCreate

        //    this.Window.DecorView.SystemUiVisibility = StatusBarVisibility.Hidden;
        //    ActionBar?.Hide();
        //}
        //else
        //{
        //    this.Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen);
        //    SupportActionBar?.Hide();
        //}

        //global::Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never);
        //Window.ClearFlags(WindowManagerFlags.ForceNotFullscreen);
        //Window.ClearFlags(WindowManagerFlags.Fullscreen);
        //Window.AddFlags(WindowManagerFlags.Fullscreen |
        //                WindowManagerFlags.TurnScreenOn |
        //                WindowManagerFlags.KeepScreenOn);

        this.Window.ClearFlags(WindowManagerFlags.Fullscreen);
        this.Window.AddFlags(WindowManagerFlags.Fullscreen); // hide the status bar
        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());

    }
  <style name="FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <!--<item name="windowNoTitle">true</item>-->
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <!--<item name="android:windowContentOverlay">@null</item>
    <item name="android:actionBarSize">0dp</item>-->

    <!--<item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>

    --><!-- No backgrounds, titles or window float --><!--
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">false</item>


    --><!--<item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>-->
  </style>
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
  <item name="windowNoTitle">true</item>
  <item name="windowActionBar">false</item>
  <item name="android:windowFullscreen">true</item>

  <!--colorPrimaryDark is used for the status bar-->
  <item name="colorPrimaryDark">#fff9f9f9</item>
</style>
[Activity(Label = "FormsIssue6", Icon = "@drawable/icon", Theme = "@style/Theme.AppCompat.Light.NoActionBar.FullScreen", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        //ToolbarResource = Resource.Layout.Toolbar;
        //RequestWindowFeature(WindowFeatures.NoTitle);
        //Window.AddFlags(WindowManagerFlags.Fullscreen | WindowManagerFlags.TurnScreenOn);

        base.OnCreate(bundle);

        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());
    }
}