它是possible把android状态栏完全透明与Xamarin表单?

oxf4rvwz  于 2022-12-07  发布在  Android
关注(0)|答案(2)|浏览(128)

我正在寻找一种方法,用Xamarin Forms将Android StatusBar完全透明。我可以通过将android:windowTranslucentStatus设置为true,轻松地将其设置为半透明。它将是黑色的,不透明度约为50%,但无论如何,它的背景将是可见的,这不是我想要的。我找到了这篇文章,这正是我所需要的结果https://learnpainless.com/android/material/make-fully-android-transparent-status-bar,但问题是似乎没有明显的方法在Xamarin Forms中实现相同的效果。
我也看过这个主题(在我创建我的主题时有人建议我)Android transparent status bar and actionbar,并在谷歌上搜索了这个主题Xamarin Forms background image with transparent status bar和其他几个主题。但所有这些解决方案最终也都是一个半透明的状态栏。所以我完全被这个问题所困扰

ddrv8njm

ddrv8njm1#

我刚刚找到了一个简单的解决方案。我只需要设置一个带有alpha组件的colorPrimaryDark。我在十六进制值的末尾设置alpha组件(就像在android上一样),但我需要在xamarin的开头设置它。所以解决方案是这样的:

<item name="colorPrimaryDark">@color/statusTransparent</item>

颜色本身(在colors.xml中)是

<color name="statusTransparent">#26ff9b76</color>

其中26是十六进制alpha分量。这意味着15% alpha,但如果我把它改为00,我会得到完全透明的状态栏我在这里得到的值是Hex transparency in colors

之后

虽然状态栏变成了透明,但是xamarin并没有在状态栏下绘制页面,只有Activity的背景是可见的

让xamarin在状态栏下绘制内容的唯一方法是通过android:windowTranslucentStatus使其半透明但在本例中它看起来像这样:

这不是我想要的。所以问题还没有解决

6mzjoqzu

6mzjoqzu2#

您可以在MainActivity.cs的OnCreate方法中执行此操作
这将从所有屏幕中删除状态栏。

// On Create in the activity
protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    this.Window.ClearFlags(WindowManagerFlags.Fullscreen);
    SetContentView (Resource.Layout.YourLayout);
}

如果您希望同时支持两个平台,我希望您在代码隐藏文件中执行此操作:

public partial class MyPage : ContentPage  
{  
      public MyPage()  
      {  
         InitializeComponent();  
         NavigationPage.SetHasNavigationBar(this, false);  
      }
}

相关问题