Cordova Android应用导航栏和状态栏闪烁或变为纯白色

ojsjcaue  于 2022-11-15  发布在  Android
关注(0)|答案(3)|浏览(234)

我们正在Zebra TC-57设备上使用Cordova 9.0将Web应用程序部署到Android 8,该设备具有软导航栏(返回、主页最近使用的软按钮),我们看到的是通常由状态栏占据的屏幕区域(顶部)和导航栏(底部)快速闪烁,有时变为纯白色导致状态栏和导航栏无法正确呈现。
我们不希望应用程序占据整个屏幕,我们只希望它适当地占据状态栏和导航栏之间的屏幕空间。
对此有什么解决办法吗?

pb3s4cty

pb3s4cty1#

修复
AndroidManifest.xml<activity/>元素中,将@android:theme更改为值@android:style/Theme.Translucent,为我们修复了以下问题:

cordova 生成的Android清单. xml
<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文件:

cordova config.xml平台部分
<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

<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

6jjcrrmo

6jjcrrmo2#

将GPU渲染器设置为SKIA有助于TC 56-但您需要访问开发人员选项

o2g1uqev

o2g1uqev3#

我也遇到过类似的问题,但是换成@android:style/Theme.Translucent没有用,其他主题也没有用。这是在Android 8.1的斑马TC51上。问题似乎与键盘有关,因为关闭键盘会触发导航栏的闪烁。我的解决方案是在AndroidManifest.xml中添加此问题。

<activity android:name=".MainActivity"
   android:windowSoftInputMode="adjustPan">

相关问题