0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙上实现简单的“每日新闻”

OpenHarmony技术社区 来源:OST开源开发者 2022-12-26 09:58 次阅读

这是一篇讲解如何实现基于鸿蒙 JS的简单的每日新闻。

可滚动区域

在许多场景中,页面会有一块区域是可滚动的,比如这样一个简单的每日新闻模块:

上面的新闻类型是一块可横向滚动的区域,下方新闻列表是一块可竖向滚动的区域。

在鸿蒙 js 组件中,想要实现可滚动的区域,则是使用 list 组件。list 仅支持竖向滚动,横向滚动要用 tabs。

list + list-item

这里以本地新闻模块为例,数据请求自天行数据接口

https://www.tianapi.com/apiview/154

ab450290-8468-11ed-bfe3-dac502259ad0.png

上方为一个搜索框,下方是新闻列表。搜索框给了固定高度,那么怎样让新闻列表能够占满屏幕剩余部分呢?

只需将父容器设置 flex 布局,list 设置 flex:1 即可。list 下直接放 list-item,在总高度超出 list 的高度后,即可上下滚动。

hml:

 
{{$item.title}} {{$item.source}} {{$item.ctime}}

css:

/*本地新闻*/
.searchView{
width:100%;
height:140px;
background-color:#f0f0f0;
display:flex;
align-items:center;
}
.searchView>image{
margin:040px040px;
height:60px;
width:60px;
}
.searchView>input{
margin-right:40px;
}
.localView{
width:100%;
flex:1;
display:flex;
flex-direction:column;
}
.localContent{
margin-left:20px;
}
.newsItem{
width:100%;
height:240px;
border-bottom:1pxsolid#bbbbbb;
display:flex;
align-items:center;
}
.newsContent{
display:flex;
flex-direction:column;
margin-right:20px;
margin-left:20px;
}
.newsContent>text{
margin-top:20px;
height:140px;
font-size:34px;
color:#333333;
}
.newsDesc{
height:60px;
line-height:60px;
display:flex;
justify-content:space-between;
}
.newsDesc>text{
font-size:28px;
color:#777777;
}

js:

searchLocalNews(){
leturl='http://api.tianapi.com/areanews/index?key=xxxx&areaname=江苏';
if(this.searchWord){
url=url+'&word'+this.searchWord;
}
fetch.fetch({
url:url,
responseType:'json',
success:res=>{
letdata=JSON.parse(res.data);
this.localNews=data.newslist;
}
})
},
新闻列表可滚动,且不会影响搜索框的位置。

ab608286-8468-11ed-bfe3-dac502259ad0.png  

list + list-item-group + list-item

list 组件的子元素还可以是 list-item-group,顾名思义应是分组列表项,list-item 作为 list-item-group 的子元素。

试用示例:

分组1子项1 分组1子项2 分组1子项3 分组2子项1 分组2子项2 分组2子项3
.manageList{
height:100%;
width:100%;
}
.list-item-group{
width:100%;
height:450px;
}
.list-item{
width:100%;
height:150px;
display:flex;
justify-content:center;
align-items:center;
border-bottom:1pxsolidgray;
}
.list-item>text{
line-height:100px;
}

ab7ccacc-8468-11ed-bfe3-dac502259ad0.png
ab91ab9a-8468-11ed-bfe3-dac502259ad0.png

可以看出,list-item-group 是可折叠的列表分组,且默认是折叠的。 点击右侧小箭头可展开列表,如果 list-item-group 给了高度,则折叠和展开后这一块区域的高度不变。在折叠时,展示第一个 list-item 的内容。 那么如果每一个 list-item-group 中 list-item 数目不固定,在展开后的布局就会很难看。 如下:

aba7bb9c-8468-11ed-bfe3-dac502259ad0.png

其实不定义 list-item-group 的高度即可,折叠高度为 list-item 的高度,展开后高度自适应增长,超出 list 高度可以滚动,功能还是很强大的。 更改 css 后的效果如下:

abc565d4-8468-11ed-bfe3-dac502259ad0.png
abdaeaf8-8468-11ed-bfe3-dac502259ad0.png

这种分组的列表,可以制作一个简单的后台管理系统菜单界面。这里我将菜单数据文件、图片文件放入 nginx 服务器的目录中,再通过内网穿透访问资源。 注意数据的格式,list-item-group 和 list-item 之间存在父级标签关系,故数据中也应存在父级关系。 list-item-group 展示的内容是其下第一个 list-item,这里用一个两重 for 循环实现:

abebf8b6-8468-11ed-bfe3-dac502259ad0.png
ac15d316-8468-11ed-bfe3-dac502259ad0.png
manage.json:
{
"manageList":[
{
"name":"组织管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/org.png",
"subList":[
{
"name":"查询组织",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/search.png"
},
{
"name":"添加组织",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"删除组织",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
}
]
},
{
"name":"人员管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/person.png",
"subList":[
{
"name":"查询人员",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/search.png"
},
{
"name":"添加人员",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"批量导入人员",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"删除人员",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
},
{
"name":"修改人员",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/update.png"
}
]
},
{
"name":"卡片管理",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/card.png",
"subList":[
{
"name":"开卡",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/add.png"
},
{
"name":"退卡",
"icon":"http://milkytea.free.idcfengye.com/images/christools/icon/delete.png"
}
]
}
]
}

hml:

 
{{$item.name}} {{value.name}}
js:
getManageList(){
leturl="http://milkytea.free.idcfengye.com/text/manage.json";
fetch.fetch({
url:url,
responseType:'json',
success:res=>{
letdata=JSON.parse(res.data);
this.manageList=data.manageList;
}
})
}

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:鸿蒙上实现简单的“每日新闻”

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    鸿蒙开发AI应用(汇总)连载中

    ...5. 用鸿蒙开发AI应用(五)HDF 驱动补光灯本篇介绍了鸿蒙上的 HDF 驱动开发,通过一个控制红外补光灯的自定义驱动程序,描述了内核态、用户态和驱动配置的开发细节...6. 用鸿蒙开发AI应用(六
    发表于 01-13 15:03

    鸿蒙上线后手机端 HarmonyOS与Android是否并存?

    鸿蒙系统正式发布后,华为手机现有Android系统是否会与HarmonyOS并存?有没有大神公示下是如何升级转换的?不会简单到像android一样下个更新包,重启完就变鸿蒙了吧?原android的用户数据怎么过度到
    发表于 02-23 10:04

    鸿蒙软总线的简单使用

    鸿蒙软总线的简单使用-HiHope社区官方号-电子发烧友网 (elecfans.com)
    发表于 08-18 11:02

    如何实现HarmonyOS Java端的气泡聊天框?

      HarmonyOSJava端的气泡聊天框怎么实现?android上有9图可实现鸿蒙上有什么类似的方案没?
    发表于 06-13 09:59

    请问鸿蒙hap包是否支持插件化开发?

    如题,安卓上可以使用dexclassloader机制动态加载其他apk作为插件使用,鸿蒙上用类似的能力吗?有什么解决方案呢?
    发表于 06-16 11:34

    鸿蒙上能安装docker吗?

    android是不支持安装docker的,想了解下鸿蒙是否支持安装docker
    发表于 03-21 16:32

    聊聊鸿蒙上线以后面临的竞争对手

    鸿蒙”上线时间晚;也有人未卜先知说不如安卓、OS好;当然也少不了毫无缘由地冷嘲热讽。 对于一个还没有面世的系统,最可怕的不是要面临多少竞争对手,而是在没有得到体验就有了先入为主的否定。 吐槽完了,咱们简单聊一下鸿蒙正式上
    的头像 发表于 02-26 09:57 1030次阅读

    华为鸿蒙发布会:简单的控制,不简单的体验

    华为鸿蒙如何做到让消费者像使用一台设备一样简单
    的头像 发表于 06-02 21:03 3002次阅读

    鸿蒙上使用Python进行物联网编程

    炫耀!然而,这却是非常重要的一步:在鸿蒙上用使用 Python 进行物联网编程是可行的!!! 既然可行,加上 Python 语言天生的优势(易于掌握,开发效率高),那么真的值得持续打造,将鸿蒙上的 Python 进行到底。 所以,今天的主题就是利用 GPIO 搭配 I2C
    的头像 发表于 09-28 09:55 3717次阅读
    在<b class='flag-5'>鸿蒙上</b>使用Python进行物联网编程

    鸿蒙上安装按钮实现下载、暂停、取消、显示等操作

    今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。
    的头像 发表于 01-04 14:32 1819次阅读

    用于每日新闻、天气等的电子墨水显示屏

    电子发烧友网站提供《用于每日新闻、天气等的电子墨水显示屏.zip》资料免费下载
    发表于 12-22 15:53 1次下载
    用于<b class='flag-5'>每日新</b>闻、天气等的电子墨水显示屏

    鸿蒙上实现“数字华容道”小游戏

    本篇文章教大家如何在鸿蒙上实现“数字华容道”小游戏。
    的头像 发表于 12-26 09:52 863次阅读

    鸿蒙上点亮LED灯

    上一篇我们成功的在鸿蒙开发板上输出了 Hello World!这一篇将带大家点亮 LED 灯。
    的头像 发表于 01-16 10:28 1717次阅读

    鸿蒙上开发“小蜜蜂”游戏

    小时候我们有个熟悉的游戏叫小蜜蜂。本文教大家在鸿蒙上学做这个小蜜蜂游戏。
    的头像 发表于 04-03 11:27 1235次阅读

    鸿蒙OS开发实例:【HarmonyHttpClient】网络框架

    鸿蒙上使用的Http网络框架,里面包含纯Java实现的HttpNet,类似okhttp使用,支持同步和异步两种请求方式;还有鸿蒙版retrofit,和Android版Retrofit相似的使用,解放双手般优雅使用注解、自动解析j
    的头像 发表于 04-12 16:58 232次阅读
    <b class='flag-5'>鸿蒙</b>OS开发实例:【HarmonyHttpClient】网络框架