我们正在Zebra TC-57设备上使用Cordova 9.0将Web应用程序部署到Android 8,该设备具有软导航栏(返回、主页最近使用的软按钮),我们看到的是通常由状态栏占据的屏幕区域(顶部)和导航栏(底部)快速闪烁,有时变为纯白色导致状态栏和导航栏无法正确呈现。我们不希望应用程序占据整个屏幕,我们只希望它适当地占据状态栏和导航栏之间的屏幕空间。对此有什么解决办法吗?
pb3s4cty1#
修复在AndroidManifest.xml<activity/>元素中,将@android:theme更改为值@android:style/Theme.Translucent,为我们修复了以下问题:
AndroidManifest.xml
<activity/>
@android:theme
@android:style/Theme.Translucent
<manifest ...> ... <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Translucent" android:windowSoftInputMode="adjustResize"> ... </activity> ... </manifest>
自动执行此更改的最简单方法是将一个edit-config元素添加到Cordova config.xml文件的android <platform>部分(感谢@simon-ludwig提供此info),这样您就不必修改Cordova生成的AndroidManifest.xml文件:
edit-config
config.xml
<platform>
<platform name="android"> <edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:label='@string/activity_name']" mode="merge"> <activity android:theme="@android:style/Theme.Translucent"></activity> </edit-config> <!-- Other Android platform settings --> </platform>
在某些设备上,Cordova android生成的默认Android主题似乎不兼容。它为AndroidManifest.xml中的android:theme属性指定的值为@android:style/Theme.DeviceDefault.NoActionBar:
android:theme
@android:style/Theme.DeviceDefault.NoActionBar
<manifest ...> ... <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> ... </activity> ... </manifest>
Android开发者网站上有许多主题选项here。我们发现,至少在运行Android 8时,android:theme="@android:style/Theme.Translucent"的值适用于TC-57
android:theme="@android:style/Theme.Translucent"
6jjcrrmo2#
将GPU渲染器设置为SKIA有助于TC 56-但您需要访问开发人员选项
o2g1uqev3#
我也遇到过类似的问题,但是换成@android:style/Theme.Translucent没有用,其他主题也没有用。这是在Android 8.1的斑马TC51上。问题似乎与键盘有关,因为关闭键盘会触发导航栏的闪烁。我的解决方案是在AndroidManifest.xml中添加此问题。
<activity android:name=".MainActivity" android:windowSoftInputMode="adjustPan">
3条答案
按热度按时间pb3s4cty1#
修复
在
AndroidManifest.xml
<activity/>
元素中,将@android:theme
更改为值@android:style/Theme.Translucent
,为我们修复了以下问题:cordova 生成的Android清单. xml
自动执行此更改的最简单方法是将一个
edit-config
元素添加到Cordovaconfig.xml
文件的android<platform>
部分(感谢@simon-ludwig提供此info),这样您就不必修改Cordova生成的AndroidManifest.xml
文件:cordova config.xml平台部分
顶级域名;
在某些设备上,Cordova android生成的默认Android主题似乎不兼容。它为
AndroidManifest.xml
中的android:theme
属性指定的值为@android:style/Theme.DeviceDefault.NoActionBar
:Android开发者网站上有许多主题选项here。我们发现,至少在运行Android 8时,
android:theme="@android:style/Theme.Translucent"
的值适用于TC-576jjcrrmo2#
将GPU渲染器设置为SKIA有助于TC 56-但您需要访问开发人员选项
o2g1uqev3#
我也遇到过类似的问题,但是换成
@android:style/Theme.Translucent
没有用,其他主题也没有用。这是在Android 8.1的斑马TC51上。问题似乎与键盘有关,因为关闭键盘会触发导航栏的闪烁。我的解决方案是在AndroidManifest.xml中添加此问题。