android - 隐藏 xamarin.android 上的状态栏
问题描述
所以我觉得问这个有点愚蠢,但我现在真的很困惑。当视频全屏显示时,我需要隐藏状态栏,但我不断收到
CS0120 非静态字段、方法或属性“Activity.Window”需要对象引用
我尝试创建一个 Activity 类的实例,但会引发 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 类实例并将其设置为等于 (MainActivity)Platform.CurrentActivity; 通过那个实例,我能够使用 Window.AddFlags(WindowManagerFlags.Fullscreen);
MainActivity hideBar = new MainActivity();
hideBar = (MainActivity)Platform.CurrentActivity;
hideBar.Window.AddFlags(WindowManagerFlags.Fullscreen);
推荐阅读
- macos - docker.bintray.io/jfrog/artifactory 7.18.6 版本运行失败
- python - 如何在 AWS lambda 上为 python 3.8 安装 Pillow?
- sms - SMS电子邮件网关删除标题中的“FRM”和“MSG”
- sql - Oracle Sql 非重复列数据
- vim - 使用 spice 语法打开 cir sp sim
- reactjs - TypeError:Android 模拟器中的网络请求在本机反应中失败
- python - 在熊猫数据框中使用 groupby 时如何保留所有数据字段?
- ios - 如何为在 iPad 上运行的 iPhone SwiftUI 应用程序锁定纵向方向?
- powershell - 如何在 gmail powershell 脚本中设置一周到期的机密模式?
- python - 如何清除 Open3D 中的凸起网格?