繁体   English   中英

Xamarin.Forms具有软键盘或警报的Android沉浸模式

[英]Xamarin.Forms Android immersive mode with soft keyboard or Alert

我正在尝试让我的Xamarin.Forms应用程序使用Android的沉浸式模式,因为我使用的是小屏幕设备,因此软键和导航栏正在窃取我宝贵的屏幕空间。

由于我使用的设备具有硬件键盘,因此我想隐藏软键盘。 目前,我通过安装“空输入法”键盘解决了此问题。 但是,键盘仍在那儿,因此每次要求将焦点放在Entry元素上时,键盘都会显示为“已显示”。 这将导致应用程序退出沉浸式模式。 当我从表单应用程序显示警报时,也是如此。

理想情况下,我希望我的应用程序始终保持沉浸式模式,至少在要求重点关注Entry时(根本不“显示”软键盘,或者当“显示”键盘时不禁用沉浸模式)。 对于警报,我希望应用程序在隐藏警报时重新进入沉浸式模式。 目前,我通过使用自定义DisplayAlert方法扩展Page类来解决此问题,该方法在DisplayAlert Task完成后切换沉浸式模式。

我进行了一些研究,找到以下文章: 使用键盘时的沉浸式模式用户设法解决了这个问题,因此有解决方案吗?

https://forums.xamarin.com/discussion/33034/prevent-entry-soft-keyboard-from-showing-on-android但此解决方案不适用于Entry元素,并且我想避免为元素编写自定义渲染器。

是否有人之前曾遇到过类似的问题并设法解决了?

对于我来说,这不是最好的解决方案,但绝对是最简单的。

尝试这个:

final Handler forceImmersive = new Handler();
    Runnable runnable = new Runnable() {
        @Override
        public void run() {

            // Enables regular immersive mode.
            // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
            // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            View decorView = getWindow().getDecorView();
            decorView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                            // Set the content to appear under the system bars so that the
                            // content doesn't resize when the system bars hide and show.
                            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            // Hide the nav bar and status bar
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN);

            forceImmersive.postDelayed(this, 1000);
        }
    };

    forceImmersive.postDelayed(runnable, 1000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM