Trust
Trust
  • 发布:2017-03-06 15:32
  • 更新:2023-06-18 17:42
  • 阅读:50849

【示例】原生标题栏titleNView使用说明

分类:HTML5+

概念澄清

HBuilder8.0.1版更新说明中App模块【重要】更新,新增原生导航栏控件
titleNView在js层也是nativeObj.View对象,可再次自由绘制定义。建议非必要不使用双webview模式的webview title,而改用原生title。
以往,为了解决列表流畅滚动等问题,采用了双webview模式等方案。现在有了titleNView后,可以减少webview的数量,进而大幅提高应用的整体性能。

titleNView规范地址:**http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewTitleNViewStyles

实际使用

可用属性

目前只有三个属性可以配置

  1. backgroundcolor 导航栏背景颜色,字符串类型,格式为“#RRGGBB”,默认值为灰黑色(#1B1A1F)
  2. titletext 导航栏标题文字内容,默认值为当前应用的标题; titlecolor:导航栏标题文字颜色,字符串类型,格式为“#RRGGBB”
  3. titlecolor 导航栏标题文字颜色,字符串类型,格式为“#RRGGBB”,默认值为白色(#FFFFFF)

ps:注意属性的大小写。并且高度是固定的,为44px。

首页配置

首页的titleNView需要在manifest.json文件中配置。
plus->launchwebview->titleNView

"plus": {  
    "launchwebview": {  
        "titleNView": {  
            "backgroundcolor": "#f7f7f7",  
            "titletext": "首页",  
            "titlecolor": "#ff461f"  
        }  
    }  
}  

非首页webview

该属性必须在创建webview时就设置,不支持动态setStyle修改。

var homeWv = plus.webview.create('home.html', 'home', {  
    titleNView: {  
        titleText: 'home页'  
    }  
});  
homeWv.show('slide-in-right');  

mui扩展

mui.openWindow({  
    url: 'home.html',  
    id: 'home',  
    styles: {  
        titleNView: {  
            titleText: 'home页'  
        }  
    }  
})  

补充
titleNView的高度是固定的,为了方便开发者,mui-v3.5.1开始提供了更为灵活的方案。

mui.openWindowWithTitle(WebviewOptions,{  
    title:{//标题配置  
        text:'home页',  
    },  
    back:{//左上角返回箭头  
        image:{//图片格式  
            base64Data:''//加载图片的Base64编码格式数据 base64Data 和 imgSRC 必须指定一个.否则不显示返回箭头  
        }  
    }  
});  

关于openWindowWithTitle方法,请参考mui相关文档

获取titleNView对象

通过getTitleNView()方法,可以获取webview窗口的原生标题栏对象。

var titleNView= plus.webview.currentWebview().getTitleNView();  

添加button

可以通过直接配置titleNView的buttons实现icon的绘制以及click事件的监听,参考文档http://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewCustomButtonStyles
以及这篇文章内置浏览器titleNView版

修改titleText

var wv = plus.webview.currentWebview();  
wv.setStyle({  
    titleNView: {  
        titleText: '标题'  
    }  
});

绘制更多内容

更新说明中提到,titleNView在js层是nativeObj.View对象,可以通过相关方法进行更多内容的绘制。
最新的Hello Mui示例工程,首页的icon的绘制就是这样实现的,在最新的HBuilder中新建Hello Mui示例工程即可体验并查看相关源码。

更多

更多关于HBuilder8.0的更新,以及manifest.json的配置,参考相关文章。
感谢80万开发者厚爱,HBuilder8.0正式发布 【内含重要性能优化新策略】
Manifest.json文档说明 manifest配置

最后附上一个简单的示例源码,解压后真机运行即可。

2 关注 分享
SixGodWill 2***@qq.com

要回复文章请先登录注册

月球上的人

月球上的人

回复 y***@gmail.com :
你好请问你获取到了吗
2017-09-12 17:57
月球上的人

月球上的人

回复 c***@163.com :
你好请问你获取到了吗
2017-09-12 17:50
月球上的人

月球上的人

回复 yeetong :
你好请问你获取到了吗
2017-09-12 17:49
s***@163.com

s***@163.com

内容失实或很久没更新了。其实可以将titleNviewSTYLE参数全部导进去。而不是仅仅三个。现在就是高度调不了,能调就爽了。

"navigationbar": {
"titletext": " ",
"titlecolor": "#000000",
"autoBackButton":true, //标题栏控件是否显示左侧返回按钮
"backgroundColor":"#F7F7F7", //标题栏控件的背景颜色
"type":"transparent",//"default" - 默认样式,顶部停靠显示,挤压Webview页面内容显示区域; "transparent" - 透明样式
"splitLine":{"color":"#F0AD4E","height":"1px"}
},
2017-09-02 14:30
沙子

沙子

发现一个问题,貌似标题没有居中
2017-08-15 14:47
yeetong

yeetong

我也获取不到。急需要。怎么办。一直是null。延迟5秒也没法获取。
2017-05-04 20:39
c***@163.com

c***@163.com

回复 SixGodWill :
我也是undefined,怎么解决
2017-04-28 15:49
c***@163.com

c***@163.com

navigationbar,我想问一下,这个沉浸式的话,paddingtopZ怎么解决
2017-04-20 15:46
dongs

dongs

回复 SixGodWill :
同样的问题,你那边最后怎么解决的?
2017-04-20 12:59
4***@qq.com

4***@qq.com

回复 y***@gmail.com :
首页的需要在 manifest.json中配置
2017-03-24 15:02