页面布局
首先在'tab-messagehtml'中添加聊天消息的布局
<ion-view>
<ion-content on-swipe-left="onSwipeLeft()">
<!--这里的rj-close-back-drop是自定义指令, 后面会讲是干嘛的-->
<ion-list rj-close-back-drop>
<ion-item class="item-avatar" on-hold="popupMessageOpthins($index)" rj-hold-active ng-repeat="message in messages">
<img ng-src="{{messagepic}}">
<!--这个就是来了新消息, 头像上的小红数字-->
<span class="rj-sm-red-icon" ng-show="messageshowHints"><p ng-bind="messagenoReadMessages"></p></span>
<h2 ng-bind="messagename"></h2>
<p class="rj-list-p" ng-bind="messagelastMessagecontent"></p>
<span class="rj-push-right" ng-bind="messagelastMessagetime"></span>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
大家在试这个的时候, 由于'messages'还未定义, 先不绑定, 用实际的值代替,像这样
<img src="img/benpng">
<span class="rj-sm-red-icon"><p>1</p></span>
<h2>小王</h2>
<p class="rj-list-p">你在干什么</p>
<span class="rj-push-right">12:30</span>
这样就能看到效果了
自定义样式
可以看到上图有点丑, 需要我们自己修改样式, 可以自己添加css文件link进来, 但官方推荐使用sass的方式修改, 关于sass的语法, 可以看 这个 , 看完就差不多可以了
首先在项目目录下,运行命令
$ionic setup sass
$ionic serve
运行以后, 就会对 scss/ionicappscss 文件监控, 有修改, 会自动编译该文件, 输出到 css/ionicappcss
所以你每次修改保存scss文件后, 浏览器会看到实时的效果, 非常方便
打开 scss/ionicappscss 文件, 如下
/
To customize the look and feel of Ionic, you can override the variables
in ionic's _variablesscss file
For example, you might change some of the default colors:
$light: #fff !default;
$stable: #f8f8f8 !default;
$positive: #387ef5 !default;
$calm: #11c1f3 !default;
$balanced: #33cd5f !default;
$energized: #ffc900 !default;
$assertive: #ef473a !default;
$royal: #886aea !default;
$dark: #444 !default;
/
// The path for our ionicons font files, relative to the built CSS in >
方法倒是有很多种,不过直接利用资源管理器无疑是最快捷的。
我说的并不是解决方案的资源体系,而是SystemResourceResourceReader和Writer,虽然不像ResourceManager一样有丰富的支持,但是仅靠枚举接口也足够你使用了。
我抽了点空直接给你写了个辅助静态类(ResPacker),注释齐全已调试,拿走用吧^_^using System;using SystemCollections;using SystemCollectionsGeneric;using SystemResources;using SystemIO;using SystemDrawing;namespace ConsoleApplication3{ class Program { //写在前面: //1这个辅助类可以帮你把任意多的任意对象都塞到一个文件里去,也能一次性的提出来 //2赶时间,一句trycatch都没写,自己补上 //3不建议将不同类型的对象打包到一个文件里。用Image就都Image,用string就都string,免得取出来后还要判断类型 //4增加和删除我没有写,原因是打包的资源文件本质是连续的字节流,从中间删一个文件太麻烦 //5增加 *** 作可以使用非覆盖模式的打包方法强制追加(后面有说明) //6删除 *** 作建议读取所有的资源,删掉不要的然后一次性覆盖写入 //7再次提醒,NET是决不允许资源名重名或者是数字首字资源名的。数字首字问题我已处理,重名问题自己看着办,最好穿进去前就丢到字典当主键 //8我未做文件占用检测,所以请避免一边打包一边解包。 //9此为静态类,给客户用的增删改小工具程序请把此类复制走 //999感谢您的围观!代码随便用!有麻烦还找我! static void Main(string[] args) { //打包 Dictionary<string, object> dicToPack = new Dictionary<string, object>(); dicToPackAdd("key1", ImageFromFile(@"c:\Users\Mako\Pictures\1jpg")); dicToPackAdd("key2", "hello world"); ResPackerPack(dicToPack); //解包 Dictionary<string,object> dicRcv= ResPackerGetAllResources(); ConsoleWriteLine((string)dicRcv["key2"]); ConsoleWriteLine(dicRcv["key1"]GetType()FullName); ConsoleReadKey(); } } public static class ResPacker { /// <summary> /// 批量打包任意对象到资源文件 /// </summary> /// <param name="objCollection">被打包对象的列表。键值对中键为其在资源文件中的唯一标示名。</param> /// <param name="targetFilePath">目标资源文件。默认参数为当前目录下的"MyRespck"文件。</param> /// <param name="overwrite">是否覆盖已存在的目标文件。默认=True</param> public static void Pack(IDictionary<string,object> objCollection, string targetFilePath = "MyRespck", bool overwrite = true) { if (overwrite) FileDelete(targetFilePath); using (ResourceWriter rw = new ResourceWriter(targetFilePath)) { foreach (KeyValuePair<string, object> pair in objCollection) //为了防传进来的资源名有数字开头,资源名都加了前缀_ rwAddResource("_" + pairKey, pairValue); rwGenerate(); rwClose(); } } /// <summary> /// 解包资源文件,返回所有资源及其资源名 /// </summary> /// <param name="targetFilePath">要解包的资源文件。默认为当前目录下的"MyRespck"</param> /// <returns>资源字典,键值为资源唯一标示名。若无资源返回空集合。</returns> public static Dictionary<string,object> GetAllResources(string targetFilePath = "MyRespck") { Dictionary<string, object> rtn = new Dictionary<string, object>(); using (ResourceReader rr = new ResourceReader(targetFilePath)) { foreach (DictionaryEntry entry in rr) rtnAdd(((string)entryKey)Substring(1), entryValue); } return rtn; } /// <summary> /// 根据资源名在指定的资源文件中检索资源 /// </summary> /// <param name="resName">资源名</param> /// <param name="targetFilePath">要在其中检索的资源文件名,默认为"MyRespck"</param> /// <returns>资源名对应的资源</returns> public static object SearchResource(string resName,string targetFilePath="MyRespck") { object rtn=null; using (ResourceReader rr = new ResourceReader(targetFilePath)) { foreach(DictionaryEntry entry in rr) if ((string)entryKey == '_' + resName) { rtn = entryValue; break; } } return rtn; } }}
项目需求:使用Ionic1做混合App开发,使用Leaflet提供地图服务
遇到问题:地图上的click事件在Ionic App中不生效,在浏览器(PC和移动端)都可以
通过在Leaflet的github Issue 上搜索,有人遇到类似问题,解决方案是在地图的容器上加属性data-tap-disabled="true",如下:
通过加这个属性,我的问题也解决了。后面查了一下ionicbundlejs源码,其中2624行开始的注释有解释,Ionic Tap System 与 Google Map 和 Leaflet Maps等有touch detection system的第三方库有冲突,为解决这个冲突,可以禁用Ionic Tap System:
以上就是关于怎么改ionic里面的d窗内容以及样式全部的内容,包括:怎么改ionic里面的d窗内容以及样式、如何使用ionic打包android的apk、ionic3怎么读取asstes路径下面的文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)