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

c9qzyr3d  于 2023-05-11  发布在  其他
关注(0)|答案(2)|浏览(117)

我的实际应用程序是在HID模式下使用蓝牙扫描仪,并捕获MainActivity的DispatchKeyEvent上的输入。它工作得很好,除了屏幕变暗到一些黑暗不透明的颜色,看起来一切都被禁用,你必须导航回一个页面与输入控件,并点击它,让屏幕恢复正常。
它不是明显的股票模板,但在我的实际应用程序(屏幕截图底部)调光是非常明显的;它是一个蓝灰色的不透明覆盖层,非常突出。我不知道为什么会这样。如果我的实际应用程序像默认表单示例一样变暗,我几乎会很高兴。
步骤:
1.从其中一个模板制作Xamarin Forms应用程序。
1.什么都不改变。
1.运行模拟器。
1.按键盘上的按钮。
结果:屏幕变暗且软键盘未弹出。
后续步骤:
1.添加Entry控件。好< Entry/>的。
1.点击它,屏幕变亮了回来。
1.删除< Entry/>
1.按下键盘上的一个键,软键盘就会弹出,屏幕也不会再变暗。
我想要的:
1.知道暗/覆盖颜色/不透明度设置在哪里,这样我就可以改变它。
1.不允许软键盘尝试弹出,除非有一个输入字段具有焦点。
以下是默认表单应用的屏幕截图:
非调光:

按下键盘后变暗:

我的实际测试设备是运行Android 10.0的三星Galaxy XCover Pro。我正在将一个原生的Xamarin Android应用程序移植到Forms上,这样我们也可以在iOS上运行它。我的android应用程序从来没有遇到过这个问题,我不知道如何跟踪发生了什么。
这是之前的照片我有一个进入场聚焦。

用蓝牙扫描仪扫描条形码后,会发生以下情况:

XAML中没有定义任何覆盖/模态框视图。覆盖图不是我加的。虽然我似乎做了一些事情来影响颜色;我在styles.xml文件中没有看到任何东西会改变默认的浅灰色(如示例Xamrin Forms模板所示)。
我可以用扫描仪在“欢迎使用Xamaring表单!“同样,屏幕截图并没有真正显示覆盖颜色的变化;它更加微妙;我真的很想知道为什么在我的应用程序的覆盖是如此明显。

mefy6pfw

mefy6pfw1#

我还是很生气这种事会发生。但以防其他人使用硬件键盘作为输入(或BT扫描仪连接为HID),并且您认为您会很喜欢并覆盖默认样式之一,并使用像这样的漂亮的绿色强调色:(虽然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”是邪恶的,不能被覆盖并与硬件键盘一起使用,除非你想让你的应用程序认为整个屏幕在你扫描条形码后应该得到高亮颜色:

gmxoilav

gmxoilav2#

是的,这是相当恼人的,特别是当与外部条形码扫描仪工作。我在你的回答中找到了一个解决方案,我用Android的透明颜色替换了colorControlHighlight。

<item name="colorControlHighlight">@android:color/transparent</item>

这是一个明显的解决方案,而且很快。它会发生,但用户不会看到它。对我很有效。

相关问题