Xamarin Forms - 当没有输入控件时,物理键盘会使页面变暗

Xamarin Forms - physical keyboard dims page when no input control is present

我的实际应用程序是在 HID 模式下使用蓝牙扫描仪并捕获 MainActivity 的 DispatchKeyEvent 上的输入。它工作得很好,只是屏幕变暗为一些深色不透明的颜色,看起来一切都被禁用,你必须导航回带有输入控件的页面并点击它以使屏幕恢复正常。

它在库存模板中并不明显,但在我的实际应用程序中(底部的屏幕截图)变暗非常明显;它是真正引人注目的蓝灰色不透明覆盖层。我不知道为什么会这样。如果我的实际应用程序像默认表单示例一样变暗,我几乎会很高兴。

步骤:

  1. 从其中一个模板制作 Xamarin Forms 应用程序。
  2. 什么都不改变。
  3. 运行模拟器。
  4. 按键盘上的一个按钮。

结果: 屏幕变暗,软键盘不弹出

后续步骤:

  1. 添加一个条目控件。 就可以了。
  2. 点击它,屏幕变亮。
  3. 删除<条目/>
  4. 在键盘上按一个键,软键盘弹出,屏幕不会再次变暗。

我想要的:

  1. 要知道 dim/overlay color/opacity 的设置位置,以便我可以更改它。
  2. 除非有一个具有焦点的输入字段,否则根本不允许软键盘尝试弹出。

这是默认表单应用程序的屏幕截图:

不昏暗:

按下键盘后变暗:

我的实际测试设备是三星 Galaxy XCover Pro 运行ning Android 10.0。我正在努力将原生 Xamarin Android 应用程序移植到 Forms,这样我们也可以 运行 它在 iOS 上。我的 android 应用程序从未遇到过这个问题,我不确定如何追踪发生的事情。

这是之前的照片。我有一个 Entry 字段。

用我的蓝牙扫描仪扫描条形码后,发生了这种情况:

XAML 中没有定义任何 overlay/modal boxview。叠加层不是我添加的。虽然我似乎做了一些影响颜色的事情;我在我的 styles.xml 文件中没有看到任何会改变默认浅灰色颜色的内容(如示例 Xamrin Forms 模板中所示)。

我可以用扫描仪在“欢迎使用 Xamaring Forms!”上复制它同样,屏幕截图并没有真正显示覆盖颜色的变化;它更微妙;我真的很想知道为什么在我的应用程序中叠加如此明显。

我仍然很生气它发生了。但以防万一其他人使用 硬件键盘作为输入(或作为 HID 连接的 BT 扫描仪)并且您认为您会喜欢并覆盖其中一种默认样式并使用像这样的漂亮的绿色强调色:(尽管 stupidOverlayColor 已更改为粉红色只是为了确定我发现了问题)- 不要这样做。

<!-- Base theme applied regardless of API level -->
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorControlHighlight">@color/stupidOverlayColor</item>
</style>

这个故事的寓意是“colorControlHighlight”是邪恶的,不能被覆盖和与硬件键盘一起使用,除非你想让你的应用程序认为整个屏幕应该在你扫描这样的条形码后获得高亮颜色: