`
rensanning
  • 浏览: 3552462 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38217
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607579
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682766
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89516
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:402106
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69759
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91828
社区版块
存档分类
最新评论

Cordova Android中ShowTitle的问题

阅读更多
根据官方文档的描述,要想显示TitleBar需要在config.xml中做如下设置(默认是false):
引用
<preference name="ShowTitle" value="true"/>


http://cordova.apache.org/docs/en/3.4.0/guide_platforms_android_config.md.html#Android%20Configuration

但是把这个值设置成true的时候,Android应用也无法显示TitleBar!

查看Android模板代码的AndroidManifest.xml文件,发现在第36行有如下设置:
引用
android:theme="@android:style/Theme.Black.NoTitleBar"


https://github.com/apache/cordova-android/blob/3.4.x/bin/templates/project/AndroidManifest.xml

意味着默认是不显示TitleBar的,和文档说明吻合,也就是说代码中应该有能显示出来TitleBar的地方。

继续看Cordova中唯一的Activity,在第225-228行可以看出,如果没有设置ShowTitle或者设置成了false的话,会隐藏TitleBar。但是没有说如果为true的时候应该把TitleBar再显示出来。
if(!this.getBooleanProperty("ShowTitle", false))
{
  getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}


https://github.com/apache/cordova-android/blob/3.4.x/framework/src/org/apache/cordova/CordovaActivity.java

查看了一下AndroidManifest.xml的修改历史记录,在“Sep 18, 2012”,为了对应CB-1126(改善Splashscreen的显示)在AndroidManifest.xml中添加了NoTitleBar的theme。但是同时可以看出修改记录没有对应何时能把TitleBar显示出来。Fix Version是2.2.0。不过显示TitleBar在Hybrid app中已经不是很经常用到的功能了。

https://github.com/apache/cordova-android/commit/451688a12e1eb43303601be357d9c40fd4cf1ce5

修改方法:
if(!this.getBooleanProperty("ShowTitle", false)) {
    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
} else {
    setTheme(android.R.style.Theme_Black);
}

首先修改CordovaActivity.java,添加当“ShowTitle”被设置成true的时候,显示TitleBar。


但是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);
    }
}


http://developer.android.com/reference/android/R.style.html#Theme_DeviceDefault

TitleBar显示出来了,还需要考虑是否会对SplashScreen有影响,查看CordovaActivity的showSplashScreen()方法,发现事实它是new了个Dialog并设置了Theme_Translucent_NoTitleBar的,所以不用考虑会影响SplashScreen是否会显示TitleBar了。

同时TitleBar还牵扯到ActionBar的问题,Cordova里也没有对应。
参考:http://stackoverflow.com/questions/22038657/show-actionbar-in-android-phonegap-project
  • 大小: 2.1 KB
  • 大小: 8 KB
  • 大小: 9 KB
  • 大小: 31.5 KB
  • 大小: 10.9 KB
  • 大小: 11.6 KB
分享到:
评论

相关推荐

    cordova android 自动更新update 插件

    在本主题中,我们将聚焦于"Cordova Android自动更新update插件",这是一种方便用户在不卸载应用的情况下进行版本更新的工具。 首先,理解Cordova插件的工作原理是至关重要的。Cordova插件是连接Web层(基于WebView...

    android 第三方webview cordova的集成使用

    8. **运行与调试**:使用`cordova run android`命令在模拟器或连接的设备上运行应用,或者在Android Studio中直接运行调试。 **关于Cordova和WebView的关联** Cordova的核心就是WebView,但它不仅仅是简单的...

    Android Studio 原生项目集成 Cordova 插件演示示例

    &gt; 此实例代码为 Android Studio 原生项目集成 Cordova 插件演示,而非通过 Cordova 直接编译,方便您在现有 Android Studio 项目中集成 Cordova 进行 H5 混合开发。 为了结构清晰及易维护性,项目分三个 Module ,...

    cordova-android-3.6.4.tgz

    CordovaAndroid-3.6.4 版本包含了以下关键知识点: 1. **Cordova 框架**:Cordova 提供了一组设备相关的 API,让开发者可以访问手机硬件功能,如相机、地理定位、通知等。它通过WebView(在 Android 上是 ...

    android studio搭建Cordova环境

    以下是一个详细的步骤指南,涵盖了如何在Android Studio中配置Cordova环境以及可能遇到的问题及其解决方案。 首先,确保你已经安装了以下基础软件: 1. Java Development Kit (JDK):Cordova和Android Studio都需要...

    cordova android

    3. **添加平台**:在项目目录中,运行`cordova platform add android`命令,将Android平台添加到项目中。 4. **构建与运行**:通过`cordova build android`命令编译项目,然后使用`cordova run android`将应用部署...

    cordova-android-3.6.4

    Cordova Android 3.6.4 是该框架针对 Android 平台的一个特定版本,它在2014年发布,是 Cordova 3.x 系列中的一个重要里程碑。这个版本提供了对当时 Android 系统的广泛支持,并且为开发者提供了与原生 Android 功能...

    fragment cordova android

    在Android开发中,Cordova是一种流行的开源框架,用于构建混合移动应用。它允许开发者使用Web技术(如HTML、CSS和JavaScript)来创建原生应用程序,同时利用设备的APIs。"Fragment"是Android SDK中的一个关键组件,...

    cordova android 扫一扫

    在本示例中,我们关注的是如何在Cordova项目中实现“扫一扫”功能,这通常涉及到条形码或二维码扫描。 在Cordova中添加特定功能通常通过安装插件来实现,对于“扫一扫”功能,我们需要安装一个支持扫描的插件。常用...

    cordova-android保存图片插件

    在本场景中,我们关注的是一个特定的Cordova插件,即"cordova-android保存图片插件"。这个插件主要用于Android平台,遗憾的是,根据描述,它似乎并不适用于iOS。下面我们将深入探讨这个插件的功能、工作原理以及如何...

    Android混合开发自定义Cordova插件

    本文将深入探讨"Android混合开发自定义Cordova插件"这一主题,基于提供的资源,我们将理解如何创建Cordova项目,以及如何自定义插件以扩展其功能。 1. **Cordova基础** - Cordova的核心概念是WebView,它是一个...

    phonegap/cordova 案例android版本

    在这个“phonegap/cordova案例android版本”中,我们将深入探讨这两个工具如何协同工作,以及如何在Android平台上创建一个简单的应用。 PhoneGap是由Adobe维护的一个开放源代码项目,它基于Cordova,并提供了额外的...

    Cordova-Android源码分析系列二(.docx#资源达人分享计划#

    CordovaWebView 类继承了 Android 的 WebView 类,是 Cordova 框架中一个非常重要的组件。该类共有 1000 多行代码,包含了很多重要的成员变量,如 PluginManager、BroadcastReceiver、CordovaInterface、...

    cordova android 跨平台开发案例

    项目中包含很多案例如:使用cordova 使用sqlite存储、cordova使用camera、cordova使用百度地图定位、cordova使用file、cordova使用dialog、cordova使用androidToast等等。另外里面有一个使用的简单说明。

    cordova android 环境搭建与项目导入排错

    按照官网,看,但是很乱,自己整理了一下,还要镜像,无语了吧,导入...4.接着,大陆客户按照官网安装,不能成功” 安装cordova:npm install-g cordova” 5.搜索大陆论坛,不能解决,请教刘正洋老师,解答是:国内镜像

    cordova跳转原生Activity

    在Cordova的应用中,有时我们需要调用原生的Android Activity来实现特定功能,例如访问设备硬件或利用原生库。本篇文章将详细介绍如何在Cordova中进行原生Activity的跳转,以及`HjkPlugin`可能涉及的相关知识点。 ...

    Android代码-cordova调用安卓原生activity插件

    //回调函数中的data表示从原生activity传回来的数据,已处理为json对象 alert&#40;data.id "::" data.name&#41;; }); 原生安卓activity接收参数和回传参数简单示例 public class MyActivity extends Activity { ...

    Android Cordova 插件开发之编写自定义插件

    3. **兼容性**:确保插件在不同版本的 Android 平台上都能正常工作,可能需要处理 API 兼容性问题。 通过以上步骤,你已经成功创建了一个简单的 Cordova 自定义插件,它能在 Android 平台上接收 JavaScript 调用,...

    cordova-android-3.5.0

    在3.5.0版本中,开发者可能需要使用`cordova platform add android`命令来添加Android平台,并用`cordova build`或`cordova run`来编译和部署应用。 5. **配置文件**:Cordova项目通常包含一个名为`config.xml`的...

    cordova anrdoid

    当你在应用中调用一个特定的JavaScript函数时,Cordova会处理这个调用,将其转发给相应的Android API,并将结果返回给JavaScript。这种方式使得开发者可以用他们熟悉的Web技术来开发跨平台的应用,同时也能利用到...

Global site tag (gtag.js) - Google Analytics