【问题标题】:Immersive mode while using keyboard使用键盘时的沉浸式模式
【发布时间】:2018-05-28 12:26:41
【问题描述】:

MainActivity.cs 的 Xamarin.Forms 应用程序中,我设置了沉浸式粘性模式:

    protected override void OnCreate(Bundle bundle)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;
        base.OnCreate(bundle);
        Xamarin.Forms.Forms.Init(this, bundle);
        SetFullscreen();
        LoadApplication(new App());
    }

    void SetFullscreen()
    {
        var uiOptions = (int)Window.DecorView.SystemUiVisibility;
        uiOptions |= (int)SystemUiFlags.LowProfile;
        uiOptions |= (int)SystemUiFlags.Fullscreen;
        uiOptions |= (int)SystemUiFlags.HideNavigation;
        uiOptions |= (int)SystemUiFlags.ImmersiveSticky;
        Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;
        Window.SetFlags(WindowManagerFlags.KeepScreenOn, WindowManagerFlags.KeepScreenOn);
    }

当带有Entry(输入框)和键盘的页面出现时,它会退出沉浸式模式,并且所有系统栏都变得可见。隐藏键盘时,所有条都保持可见。

同时使用Acr.UserDialogsShowLoading()

如何始终保持沉浸式模式?或者在关闭键盘时,以及在调用HideLoading()UserDialogs 时如何返回沉浸式模式?

【问题讨论】:

    标签: xamarin.forms xamarin.android


    【解决方案1】:

    我相信您正在寻找的是IOnSystemUiVisibilityChangeListener 界面。

    创建一个你的监听器:

    class SystemUiVisibilityChangeListener : Java.Lang.Object, View.IOnSystemUiVisibilityChangeListener
        {
            public void OnSystemUiVisibilityChange([GeneratedEnum] StatusBarVisibility visibility)
            {
                if (visibility == StatusBarVisibility.Visible)
                {
                    //your code here
                }
            }
        }
    

    并将其附加到您的装饰视图:

    View decorView = Window.DecorView;
    decorView.SetOnSystemUiVisibilityChangeListener(new SystemUiVisibilityChangeListener());
    var uiOptions = (int)decorView.SystemUiVisibility;
    ...
    

    如果这不起作用,您可能不得不探索聆听键盘以隐藏;这里有一些研究可以帮助您入门How to capture the "virtual keyboard show/hide" event in Android?

    【讨论】:

    • 能否请您分享您的解决方案,以防其他人也遇到问题?!
    • 我也想看看你是如何解决这个问题的,因为我也遇到了同样的问题。
    • 我也想知道。我有同样的问题:(
    • 我也是。请!
    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    相关资源
    最近更新 更多