由于<edit-config>
标记在cordova plugin.xml文件中不起作用,我尝试使用this方法更新android:theme
:
<config-file target="res/xml/config.xml" parent="/*">
<application>
<preference name="android-theme" value="@style/Theme.AppCompat.NoActionBar"/>
</application>
</config-file>
即使我将父级设置为/Application
或删除应用程序标签
,此代码也不起作用
如何更改android清单中的“android-theme”标签?
(虚拟代码):
<manifest>
<application>
<activity android:theme="@android:style/Theme.DeviceDefault.NoActionBar">
</application>
</manifest>
更新
我已更新到cordova 6.4.0并尝试使用此示例代码:
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
<uses-sdk android:minSdkVersion="16" android:maxSdkVersion="23" />
</edit-config>
当我尝试将其用于android:theme
属性时,这是有效的:
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity" mode="overwrite">
<activity android:theme="@style/Theme.AppCompat.NoActionBar" />
</edit-config>
它给出了这个java错误:
错误:无法读取未定义的属性“长度”
答案 0 :(得分:3)
我将设置从Cordova 6.2升级到Cordova 6.4.0后尝试了它对我有用。我在edit-config中尝试了合并和覆盖模式的情况。
为了测试此功能,我使用Cordova CLI创建了一个新的准系统corodva项目。然后,我在项目中安装了cordova设备插件。安装插件后,我调整了cordova设备插件的plugin.xml,并在android平台标签中添加了以下内容:
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
<uses-sdk android:maxSdkVersion="25" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.AppCompat.NoActionBar" android:windowSoftInputMode="adjustResize"/>
</edit-config>
在调整plugin.xml之后,我使用cordova platform add android
命令添加了Android平台。成功添加android平台后,我打开了platform \ android文件夹下的AndroidManifest.xml,并在其中更新了edit-config中提到的内容。 XML文件如下:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.AppCompat.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:maxSdkVersion="25" android:minSdkVersion="16" android:targetSdkVersion="24" />
</manifest>
还尝试删除并重新添加Android平台,它的工作原理。在你的情况下你使用Cordova 6.3.1,我不确定它是否与cordova有关。希望如果您可以升级到Cordova 6.4.0
,它将会起作用我的节点版本是6.9.2,而cordova android版本是6.0.0
希望它有所帮助。干杯
答案 1 :(得分:0)
您只能根据偏好更改平台配置数据,尝试使用专为此目的而设置的cordova-custom-plugin
在config.xml
使用特定plugin link
中提到的以下命令安装它如上所述,它将以下列方式应用属性android:theme
<preference name="android-manifest/application/activity/@android:theme" value="@android:style/Theme.AppCompat.NoActionBar"/>
在android-manifest -- application -- activity
答案 2 :(得分:0)
使用Gandhi的答案我已将节点应用程序更新到最新版本并将plugin.xml更新为:
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="merge">
<activity android:theme="@style/Theme.AppCompat.NoActionBar" />
</edit-config>
这很完美!