隐藏特定内容页的状态栏

2024-03-15

我正在创建一个应用程序,我想在特定页面上隐藏状态栏。在我的示例中,它是一个内容页面。我发现了几个使用 info.plist 来隐藏它的示例,但我只想将其用于特定页面,这可能吗?使用 NavigationPage.SetHasNavigationBar 隐藏导航栏很容易,但状态栏似乎有点不同。


据我所知,Xamarin 不通过 Xamarin.Forms 类提供此功能。您将需要在每个特定于平台的项目中实现它。

但是,这应该相当容易,因为您可以使用依赖服务 https://developer.xamarin.com/guides/xamarin-forms/dependency-service/来处理这个问题。

这是一个快速实施...

App.cs

public App()
{
    var layout = new StackLayout
    {
        VerticalOptions = LayoutOptions.Center,
        Children =
        {
            new Label
            {
                XAlign = TextAlignment.Center,
                Text = "Welcome to Xamarin Forms!"
            }
        }
    };

    var button = new Button
    {
        Text = "Click Me"
    };
    button.Clicked += (object sender, EventArgs e) => 
        {
            if (_isHidden)
            {
                // show
                DependencyService.Get<IStatusBar>().ShowStatusBar();
            }
            else
            {
                // hide
                DependencyService.Get<IStatusBar>().HideStatusBar();
            }

            _isHidden = !_isHidden;
        };

    layout.Children.Add(button);

    // The root page of your application
    MainPage = new ContentPage
    {
        Content = layout
    };
}

IStatusBar.cs

public interface IStatusBar
{
    void HideStatusBar();
    void ShowStatusBar();
}

Android实现

[assembly: Xamarin.Forms.Dependency(typeof(StatusBarImplementation))]
namespace MyXamarinApp.Droid
{
    public class StatusBarImplementation : IStatusBar
    {
        public StatusBarImplementation()
        {
        }

        WindowManagerFlags _originalFlags;

        #region IStatusBar implementation

        public void HideStatusBar()
        {
            var activity = (Activity)Forms.Context;
            var attrs = activity.Window.Attributes;
            _originalFlags = attrs.Flags;
            attrs.Flags |= Android.Views.WindowManagerFlags.Fullscreen;
            activity.Window.Attributes = attrs;
        }

        public void ShowStatusBar()
        {
            var activity = (Activity)Forms.Context;
            var attrs = activity.Window.Attributes;
            attrs.Flags = _originalFlags;
            activity.Window.Attributes = attrs;
        }

        #endregion
    }
}

iOS实现

[assembly: Xamarin.Forms.Dependency(typeof(StatusBarImplementation))]
namespace MyXamarinApp.iOS
{
    public class StatusBarImplementation : IStatusBar
    {
        public StatusBarImplementation()
        {
        }

        #region IStatusBar implementation

        public void HideStatusBar()
        {
            UIApplication.SharedApplication.StatusBarHidden = true;
        }

        public void ShowStatusBar()
        {
            UIApplication.SharedApplication.StatusBarHidden = false;
        }

        #endregion
    }
}

这个想法是,当您需要将状态栏隐藏在特定的位置时,您可以调用 DependencyService 实现来隐藏状态栏。ContentPage。您可能还需要在隐藏后再次显示它(不太确定)。

注意:对于 iOS,您需要更新 Info.plist 文件以允许应用程序更改状态栏可见性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐藏特定内容页的状态栏 的相关文章

  • 如何在 Xamarin.Forms 中设置不透明度动画

    我想知道如何对屏幕上可见元素的不透明度进行动画处理 例如 对于 Entry 我得到了这个 this Animate d gt Debug WriteLine anim d Username Opacity AnimationTime d A
  • Xamarin Android - 如何重建 Resource.designer.cs

    在 Xamarin Android 中 如何重新生成 Resource designer cs 我尝试将所有 XML 文件的构建操作标记为 AndroidResource 但 Resource designer cs 仍然不会使用新值进行更
  • 如何在 C# (Xamarin) 中使用 setOnTouchListener?

    你能给我一个 C 中 setOnTouchListener 的例子吗 我尝试过这样但我带来了一些错误 Button1 setOnTouchListener new View OnTouchListener public boolean on
  • 使用 Xamarin.iOS 获取 iOS Library 文件夹的正确方法是什么?

    这将获取我的 iOS 应用程序的文档根目录 Environment GetFolderPath Environment SpecialFolder MyDocuments 有没有类似的东西可以到达Library folder var doc
  • 来自应用程序中心的 Android 11 设备上的应用程序未安装错误

    我正在研究Xamarin Forms应用程序 改变后目标SdkVersion to 30并使用最新的 sdk 11 1 在 appcenter 上构建应用程序 我收到错误App not installed仅在安卓11设备 如果我改变目标Sd
  • Json DeserializeObject 仅由 iOS 引发异常

    我在 Android 上没有这个问题 但是当我在 iOS 中运行相同的工作代码时 我得到了异常 public async Task Login string inlogData string password string gcm Logi
  • Mono 的 DNS 刷新超时

    虽然目前Mono项目的ServicePointManager类有DnsRefreshTimeout属性启用到其接口中 相关属性未实现 调用示例 ServicePointManager DnsRefreshTimeout 10 60 1000
  • 初始化组件不存在

    InitializeComponent 此代码行出现在我的所有 Xaml 页面的构造函数中的代码隐藏中 它抛出以下错误 初始化组件不存在 现在我无法调试项目中的任何页面 尽管我已经注释掉了这一行 我怎样才能解决这个问题 任何帮助将不胜感激
  • Xamarin Mac 中 AttributeName 的用途

    我正在尝试对 Xamarin 中的 NSMutableAttributedString 中的子字符串进行着色 但它似乎缺少正确的常量 我应该在那里放什么 Update 这越来越接近 var s new NSMutableAttributed
  • 如何在首选项标头中使用 PreferenceFragmentCompat

    我正在尝试学习在 Xamarin Android 应用程序中构建首选项页面的方法 我发现了很多 PreferenceFragment 的例子 但它被标记为已弃用 我在现阶段很难重写它们 我创建了代表标题的活动 我添加了 IntentFilt
  • 如何在Android上的Xamarin.Forms中的NavigationBar左侧添加ToolbarItem?

    I need to have关闭button 在本例中 在左侧 of 导航栏 如下 我只需要弹出窗口 因此其他元素 导航不存在潜在问题 谷歌对此有一些建议 但我只看到了 iOS 示例 这并不是一个需要处理的大问题 iOS custom re
  • 设置背景时按钮变大 - 如何使其变小

    我想让我的按钮在设置背景之前缩小或恢复正常 我知道使用背景色调可以使用相同的背景颜色来解决此问题 但我的问题是我在背景上使用选择器 当选择器设置为按钮背景时 它变得更宽 当我将背景切换为背景色调时 颜色变得不同 例如对我来说是紫色 并且按下
  • 在 Xamarin Studio for Mac 上添加 NuGet 包不起作用

    我已经尝试搜索这个问题 并且我遇到了许多人们无法添加 NuGet 包的问题 但没有发现任何可以解决我的问题的方法 我正在使用 Xamarin Studio for Mac 并尝试将 SQLite 包添加到我的 Xamarin Forms 项
  • 如何在 Xamarin.Forms.Maps 中使用深色模式 Google 地图?

    我正在尝试使用 Xamarin Forms Maps nuget 包在我的 Xamarin Forms 应用程序中使用深色模式 Google 地图 我已经成功地在 iOS 地图上使用了 OnElementChanged if e NewEl
  • 在 Monogame 和 UIKit 之间切换

    我一直在搜索和搜索 但似乎找不到适合我想做的事情的解决方案 而且我几乎已经到了不得不问它是否可能的地步 我正在使用 Xamarin Studio 开发 iOS 应用程序 我有几个不同的屏幕设置为 UIViewController 它们运行良
  • Xamarin 中 QR 扫描后的处理对话框

    我在Xamarin应用程序中使用QR码扫描仪 当它扫描QR码时 它会执行一些操作 大约需要一分钟 而在执行操作时 我想在屏幕上显示一个加载对话框 但是 它没有显示在屏幕上 并且在应用程序的其他地方 它运行得很好 Code var expec
  • 如何从命令行运行 Xamarin.UITest?

    我想在我的构建服务器上运行测试 使用 Xamarin UITest 进行 该服务器在 OS X 上运行 TeamCity 我已经在线搜索了如何执行此操作 但我只能找到如何将这些测试提交到 Xamarin Test Cloud 这不是我想要的
  • 无法在 UWP 中调试 .NET Standard 2.0 DLL

    我创建了一个新的 Xamarin Forms 解决方案 升级了所有 NuGet 确保 UWP 版本的目标版本为 16299 并确保 NET Standard 项目的目标版本为 2 0 我运行了该项目并能够很好地调试 NET Standard
  • 如何在 xamarin.forms 中隐藏列表视图的空行

    我有一个StackLayout with a ListView我有一个添加按钮 我想将其显示在ListView 但是ListView显示许多未使用的行 只是空行 这迫使我的按钮显示在页面底部 我一直在搞乱VerticalOptions一整天
  • Xamarin Forms 可折叠 StackLayout

    我正在尝试实现一种可折叠的 StackLayout 每次用户单击该按钮时 它都会展开或折叠堆栈布局以显示 隐藏更多详细信息 我能够使用下面的代码实现更多 更少的效果 但它看起来不正确 效果也不是很好 因为它立即增长 并且我正在将效果应用到其

随机推荐

  • Windows 应用商店应用程序和 F#

    我正在尝试使用 F 创建一个可移植库以与 Windows 应用商店应用程序一起使用 我用一个类创建了一个 fs 文件 module FunctionalRT open System Net open System IO type WebHe
  • Xcode 10 - 界面生成器文档

    我无法将现有故事板的 Interface Builder Document 版本更改为 Xcode 10 0 选择 Xcode 10 0 出现提示时保存并关闭并重新打开我的故事板后 它总是恢复到 Xcode 9 0 即使创建新的故事板 它也
  • 在 MongoDb 中,如何对文档中存在的内部字段进行排序?

    我的文档看起来像这样 field1 somevalue name xtz nested documents array of nested document x 1 y 2 first nested document x 2 y 3 sec
  • 在R中使用正则表达式捕获字符串的一部分

    我有这些字符串 myseq lt c ALM GSK LN 06 ID AS04 LV 06 ID png AS04 SP 06 IP png 我想做的是捕获序列的一部分 ALM GSK LN ID AS04 LV ID AS04 SP I
  • ASP.NET + 访问路径被拒绝

    我有一个 ASP NET 应用程序 它尝试在运行时在 Web 服务器上写入文件 在我的开发环境中 这是有效的 但是 当我将其部署到生产服务器并执行代码时 我收到一条错误消息 Access to the path C Inetpub wwwr
  • 活动更改之前的动画

    我试图做一些简单的事情 但我不明白为什么它不起作用 我想做的是 当我触摸 ImageView 时 它会在上面显示动画 然后 只有当该动画结束时 它才会开始新的活动 相反 发生的情况是新活动立即开始并且不显示动画 这是动画 xml
  • java swing中N个jtable的同步滚动

    我需要将 N 个表并排排列在网格窗格中 前提是所有 jtable 的滚动窗格高度保持相同 现在我想同步所有 jtable 的滚动 这意味着如果我滚动第一个 jtable 那么其余的 jtable 应该自动滚动相同的量 有人对此有任何想法吗
  • Net::HTTP 对 HTTPS 请求的响应极其缓慢

    由于某种原因 在我的开发机器上 通过 Net HTTP 执行的 HTTPS 请求的响应非常非常慢 我尝试过 RestClient 和 HTTParty 它们都有同样的问题 它似乎不知从何而来 我已经提出了数百次这些请求 没有任何问题 但今天
  • Sql连接查询

    我有三张桌子 tblLink LinkId LinkName GroupId SubGroupId GroupId 和 SubGroupId 是 tblGroup 和 tblSubGroup 中的外键tblGroup 组ID 组名称 tbl
  • 在 Python 中查看 Popen 管道流

    背景 Linux 上的 Python 2 6 6 DNA 序列分析流程的第一部分 我想从已安装的远程存储 LAN 读取可能经过 gzip 压缩的文件 以及它是否经过 gzip 压缩 gunzip 将其压缩到流中 即使用gunzip FILE
  • Mysql UPDATE ON DUPLICATE KEY 仅插入

    我正在尝试运行一个查询 以便它将插入或更新重复项 我正在为重复项使用唯一索引 但我似乎无法让它工作 它还增加了新记录 希望一些新的目光能够指出我的问题 谢谢 这是我的架构 CREATE TABLE IF NOT EXISTS pricing
  • gmtime_r 和 gmtime_s 之间的区别

    这两个函数有什么区别呢 我正在使用 MinGW 4 8 0 我知道gmtime r是线程安全的 但如果从同一线程多次调用则不安全 但我不明白gmtime s 不同之处在于gmtime r 3 http linux die net man 3
  • 使用 Kotlin 关闭/隐藏 Android 软键盘

    我正在尝试用 Kotlin 编写一个简单的 Android 应用程序 我的布局中有一个 EditText 和一个按钮 在编辑字段中写入并单击按钮后 我想隐藏虚拟键盘 有一个热门问题 关闭 隐藏 Android 软键盘 https stack
  • Rails Paperclip:更新与 update_attributes

    当我尝试通过回形针 gem 为我的用户模型 在头像属性下 上传图像时 我意识到一些非常奇怪的事情 由于某种原因 User update 和 user update attributes 的行为有所不同 有谁知道为什么会这样 using us
  • find_packages 找不到我的 Python 文件

    我有一个像这样的目录树 dir A init py something py I used find packages on dir A并期望它能找到something py 但是 它返回一个空列表 我该如何制作find packages
  • 如何在 Seaborn 图中设置色调顺序

    我有一个名为的 Pandas 数据集titanic我正在使用以下代码绘制 Seaborn 官方文档中所述的条形图 import seaborn as sns titanic sns load dataset titanic sns catp
  • 如何使用单个文本框根据任何列数据过滤行

    我在用ng table http bazalt cms com ng table 我尝试使用中给出的过滤器example http bazalt cms com ng table example 4 但为了过滤每一列 我需要有单独的文本框
  • Rails - 对象在视图中可用,但对象的属性不可用?

    我遇到一个不寻常的问题 我可以访问对象 但不能访问视图中的属性 非常感谢任何帮助 指导 这是我的模型 app models team member rb class TeamMember lt ApplicationRecord attr
  • IntelliJ 2017.2 卡在“新项目”>“Maven”的“正在加载原型列表”上

    选择时Create New Project启动 IntelliJ 2017 2 后的选项 我在Maven标签 写着 正在加载原型列表 有什么办法可以得到 Maven 原型吗 我刚刚在 2017 年 2 月 3 日 刚刚更新 在 Fedora
  • 隐藏特定内容页的状态栏

    我正在创建一个应用程序 我想在特定页面上隐藏状态栏 在我的示例中 它是一个内容页面 我发现了几个使用 info plist 来隐藏它的示例 但我只想将其用于特定页面 这可能吗 使用 NavigationPage SetHasNavigati