在 xamarin.android 上隐藏状态栏

hide status bar on xamarin.android

所以我觉得问这个问题有点傻,但我现在真的很困惑。我需要在视频全屏时隐藏状态栏,但我一直收到

CS0120 An object reference is required for the non-static field, method, or property 'Activity.Window'

我尝试创建一个 Activity class 的实例,但是会抛出 NullReferenceException。

Activity.Window.ClearFlags(WindowManagerFlags.Fullscreen); //隐藏

那么如何使用此方法仅在视频全屏时隐藏状态栏?

 public class MainActivity : AppCompatActivity, BottomNavigationView.IOnNavigationItemSelectedListener
{
    WebView web_view;
    
   

    public class HelloWebViewClient : WebViewClient
    {
        public override bool ShouldOverrideUrlLoading(WebView view, string url)
        {
            view.LoadUrl(url);
            return false;
        }
    }

  
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        SupportActionBar.Hide();
        SetContentView(Resource.Layout.activity_main);
        
        var relativeLayout = FindViewById<RelativeLayout>(Resource.Id.container);
        var relativeLayoutTwo = FindViewById<RelativeLayout>(Resource.Id.containerTwo);
        web_view = FindViewById<WebView>(Resource.Id.webview);
        web_view.Settings.JavaScriptEnabled = true;
        web_view.SetWebChromeClient(new FullScreenClient(relativeLayout, relativeLayoutTwo));
        



        BottomNavigationView navigation = FindViewById<BottomNavigationView>(Resource.Id.navigation);
        navigation.SetOnNavigationItemSelectedListener(this);
    }

    public class FullScreenClient : WebChromeClient
    {
        readonly FrameLayout.LayoutParams matchParentLayout = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent,
                                                                                                         ViewGroup.LayoutParams.MatchParent);
        readonly ViewGroup content;
        readonly ViewGroup parent;
        View customView;
       
        public FullScreenClient(ViewGroup parent, ViewGroup content)
        {
            this.parent = parent;
            this.content = content;
        }

        public override void OnShowCustomView(View view, ICustomViewCallback callback)
        {
            customView = view;
            view.LayoutParameters = matchParentLayout;
            parent.AddView(view);
            content.Visibility = ViewStates.Gone;
            **Activity.Window.ClearFlags(WindowManagerFlags.Fullscreen);**
        }

        public override void OnHideCustomView()
        {
            content.Visibility = ViewStates.Visible;
            parent.RemoveView(customView);
            customView = null;
            
        }
    }

我明白了。我使用了 Xamarin.Essentials 命名空间,并且在每个自定义方法中我创建了一个 MainActivity class 实例并将其设置为等于 (MainActivity)Platform.CurrentActivity;通过那个实例,我能够使用 Window.AddFlags(WindowManagerFlags.Fullscreen);

 MainActivity hideBar = new MainActivity();
            hideBar = (MainActivity)Platform.CurrentActivity;
            hideBar.Window.AddFlags(WindowManagerFlags.Fullscreen);