根据官方文档的描述,要想显示TitleBar需要在config.xml中做如下设置(默认是false):
[quote]<preference name="ShowTitle" value="true"/>[/quote]
[img]http://dl2.iteye.com/upload/attachment/0096/5617/ce36e64c-aa35-3575-bbf6-3a997ea72715.png[/img]
[url=http://cordova.apache.org/docs/en/3.4.0/guide_platforms_android_config.md.html#Android%20Configuration]http://cordova.apache.org/docs/en/3.4.0/guide_platforms_android_config.md.html#Android%20Configuration[/url]
[color=red]但是把这个值设置成true的时候,Android应用也无法显示TitleBar![/color]
查看Android模板代码的AndroidManifest.xml文件,发现在第36行有如下设置:
[quote]android:theme="@android:style/Theme.Black.NoTitleBar"[/quote]
[img]http://dl2.iteye.com/upload/attachment/0096/5619/6008f192-118c-31ac-b9c7-a70afe9161ea.png[/img]
[url=https://github.com/apache/cordova-android/blob/3.4.x/bin/templates/project/AndroidManifest.xml]https://github.com/apache/cordova-android/blob/3.4.x/bin/templates/project/AndroidManifest.xml[/url]
意味着默认是不显示TitleBar的,和文档说明吻合,也就是说代码中应该有能显示出来TitleBar的地方。
继续看Cordova中唯一的Activity,在第225-228行可以看出,如果没有设置ShowTitle或者设置成了false的话,会隐藏TitleBar。[color=red]但是没有说如果为true的时候应该把TitleBar再显示出来。[/color]
[img]http://dl2.iteye.com/upload/attachment/0096/5621/d97b532b-9b54-3541-8a07-58abc77b92aa.png[/img]
[url=https://github.com/apache/cordova-android/blob/3.4.x/framework/src/org/apache/cordova/CordovaActivity.java]https://github.com/apache/cordova-android/blob/3.4.x/framework/src/org/apache/cordova/CordovaActivity.java[/url]
查看了一下AndroidManifest.xml的修改历史记录,在“Sep 18, 2012”,为了对应[url=https://issues.apache.org/jira/browse/CB-1126]CB-1126[/url](改善Splashscreen的显示)在AndroidManifest.xml中添加了NoTitleBar的theme。但是同时可以看出修改记录没有对应何时能把TitleBar显示出来。Fix Version是2.2.0。不过显示TitleBar在Hybrid app中已经不是很经常用到的功能了。
[img]http://dl2.iteye.com/upload/attachment/0096/5623/723edf16-632b-344d-b20f-4479ce0085ca.png[/img]
[url=https://github.com/apache/cordova-android/commit/451688a12e1eb43303601be357d9c40fd4cf1ce5]https://github.com/apache/cordova-android/commit/451688a12e1eb43303601be357d9c40fd4cf1ce5[/url]
[b]修改方法:[/b]
首先修改CordovaActivity.java,添加当“ShowTitle”被设置成true的时候,显示TitleBar。
[img]http://dl2.iteye.com/upload/attachment/0096/5651/4f233366-6b8d-3ea3-b08f-72d6fd2d2578.png[/img]
但是Android4.0开始UI有大幅的变化,TitleBar也不是看到的这个样子,所以还需要要特殊处理一下:
[img]http://dl2.iteye.com/upload/attachment/0096/5653/0dd599c1-805c-3c3d-9a07-9c23485897c7.png[/img]
[url=http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault]http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault[/url]
TitleBar显示出来了,还需要考虑是否会对SplashScreen有影响,查看CordovaActivity的showSplashScreen()方法,发现事实它是new了个Dialog并设置了Theme_Translucent_NoTitleBar的,所以不用考虑会影响SplashScreen是否会显示TitleBar了。
同时TitleBar还牵扯到ActionBar的问题,Cordova里也没有对应。
参考:[url=http://stackoverflow.com/questions/22038657/show-actionbar-in-android-phonegap-project]http://stackoverflow.com/questions/22038657/show-actionbar-in-android-phonegap-project[/url]
[quote]<preference name="ShowTitle" value="true"/>[/quote]
[img]http://dl2.iteye.com/upload/attachment/0096/5617/ce36e64c-aa35-3575-bbf6-3a997ea72715.png[/img]
[url=http://cordova.apache.org/docs/en/3.4.0/guide_platforms_android_config.md.html#Android%20Configuration]http://cordova.apache.org/docs/en/3.4.0/guide_platforms_android_config.md.html#Android%20Configuration[/url]
[color=red]但是把这个值设置成true的时候,Android应用也无法显示TitleBar![/color]
查看Android模板代码的AndroidManifest.xml文件,发现在第36行有如下设置:
[quote]android:theme="@android:style/Theme.Black.NoTitleBar"[/quote]
[img]http://dl2.iteye.com/upload/attachment/0096/5619/6008f192-118c-31ac-b9c7-a70afe9161ea.png[/img]
[url=https://github.com/apache/cordova-android/blob/3.4.x/bin/templates/project/AndroidManifest.xml]https://github.com/apache/cordova-android/blob/3.4.x/bin/templates/project/AndroidManifest.xml[/url]
意味着默认是不显示TitleBar的,和文档说明吻合,也就是说代码中应该有能显示出来TitleBar的地方。
继续看Cordova中唯一的Activity,在第225-228行可以看出,如果没有设置ShowTitle或者设置成了false的话,会隐藏TitleBar。[color=red]但是没有说如果为true的时候应该把TitleBar再显示出来。[/color]
if(!this.getBooleanProperty("ShowTitle", false))
{
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}
[img]http://dl2.iteye.com/upload/attachment/0096/5621/d97b532b-9b54-3541-8a07-58abc77b92aa.png[/img]
[url=https://github.com/apache/cordova-android/blob/3.4.x/framework/src/org/apache/cordova/CordovaActivity.java]https://github.com/apache/cordova-android/blob/3.4.x/framework/src/org/apache/cordova/CordovaActivity.java[/url]
查看了一下AndroidManifest.xml的修改历史记录,在“Sep 18, 2012”,为了对应[url=https://issues.apache.org/jira/browse/CB-1126]CB-1126[/url](改善Splashscreen的显示)在AndroidManifest.xml中添加了NoTitleBar的theme。但是同时可以看出修改记录没有对应何时能把TitleBar显示出来。Fix Version是2.2.0。不过显示TitleBar在Hybrid app中已经不是很经常用到的功能了。
[img]http://dl2.iteye.com/upload/attachment/0096/5623/723edf16-632b-344d-b20f-4479ce0085ca.png[/img]
[url=https://github.com/apache/cordova-android/commit/451688a12e1eb43303601be357d9c40fd4cf1ce5]https://github.com/apache/cordova-android/commit/451688a12e1eb43303601be357d9c40fd4cf1ce5[/url]
[b]修改方法:[/b]
if(!this.getBooleanProperty("ShowTitle", false)) {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
} else {
setTheme(android.R.style.Theme_Black);
}
首先修改CordovaActivity.java,添加当“ShowTitle”被设置成true的时候,显示TitleBar。
[img]http://dl2.iteye.com/upload/attachment/0096/5651/4f233366-6b8d-3ea3-b08f-72d6fd2d2578.png[/img]
但是Android4.0开始UI有大幅的变化,TitleBar也不是看到的这个样子,所以还需要要特殊处理一下:
if(!this.getBooleanProperty("ShowTitle", false)) {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
} else {
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
setTheme(android.R.style.Theme_Black);
} else {
setTheme(android.R.style.Theme_DeviceDefault);
}
}
[img]http://dl2.iteye.com/upload/attachment/0096/5653/0dd599c1-805c-3c3d-9a07-9c23485897c7.png[/img]
[url=http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault]http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault[/url]
TitleBar显示出来了,还需要考虑是否会对SplashScreen有影响,查看CordovaActivity的showSplashScreen()方法,发现事实它是new了个Dialog并设置了Theme_Translucent_NoTitleBar的,所以不用考虑会影响SplashScreen是否会显示TitleBar了。
同时TitleBar还牵扯到ActionBar的问题,Cordova里也没有对应。
参考:[url=http://stackoverflow.com/questions/22038657/show-actionbar-in-android-phonegap-project]http://stackoverflow.com/questions/22038657/show-actionbar-in-android-phonegap-project[/url]