鸿蒙图片、布局元素、信息标记组件Badge
图片资源存放目录
HarmonyOS鸿蒙的图片存放地址在:entry\src\main\resources\base\media中
我们可以通过:$r('app.media.图片名称') 获取图片
@Entry
@Component
struct Index {
@State imgSrc: string = 'https://i2.hdslb.com/bfs/archive/458ffba947db17ce7cd048fb43926a3955db7eb2.jpg@672w_378h_1c_!web-search-common-cover.png';
build() { // 表示开始进行构建界面
Column(){ // Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
// 引入网络图片
Image(this.imgSrc).width('100%')
}
Row() {
// 引入本地图片
Image($r('app.media.hongmeng')).width('100%')
}
}
}
}

或者这样去写
2张图片的宽度设置为100%
@Entry
@Component
struct Index {
@State imgSrc: string = 'https://i2.hdslb.com/bfs/archive/458ffba947db17ce7cd048fb43926a3955db7eb2.jpg@672w_378h_1c_!web-search-common-cover.png';
build() { // 表示开始进行构建界面
Column(){ // Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
// 引入网络图片
Image(this.imgSrc).width('100%')
Image(this.imgSrc).width('100%')
}
Row() {
// 引入本地图片
Image($r('app.media.hongmeng')).width('100%')
}
}
}
}

svg图标
鸿蒙OS图标库地址:
https://developer.huawei.com/consumer/cn/design/harmonyos-symbol/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/DEVELOPERS0115.svg
当然你也可以使用第三方的图标库,如:阿里的图标库。
先把图标下载存为SVG,然后放在entry\src\main\resources\base\media中。
与图片的存放地址是一样的哈
@Entry
@Component
struct Index {
build() { // 表示开始进行构建界面
Column(){ //Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
Column(){
Image($r('app.media.mess')).width(30)
}.width('25%')
Column(){
Image($r('app.media.person')).width(30)
}.width('25%')
Column(){
Image($r('app.media.discover')).width(30)
}.width('25%')
Column(){
Image($r('app.media.history')).width(30)
}.width('25%')
}.width('100%')
}
}
}

给文字设置背景图
// 给文字设置背景图
Text('我是文字').width(100).height(100).fontColor('#000').backgroundImage($r('app.media.hua'))

图片是否平铺
语法:backgroundImage(图片地址,是否平铺:默认不平铺)
// 图片在水平方向上平铺
Text('我是文字').width(500).height(100).fontColor('#000').backgroundImage($r('app.media.hua'), ImageRepeat.X)


背景图片显示不出来需要注意的点
1,地址是否正确的。
2,是否给Text设置了宽高。如果不设置的话,是显示不出来的哈
设置背景图片的位置
Text().width('100%').height(100).fontColor('#000').backgroundColor(Color.Pink)
.backgroundImage($r('app.media.hua'))
.backgroundImagePosition({x:0, y:0}) // x的位置和y的位置

Text().width('100%').height(100).fontColor('#000').backgroundColor(Color.Pink)
.backgroundImage($r('app.media.hua'))
.backgroundImagePosition(Alignment.Center) //水平垂直方向上居中

backgroundImagePosition的取值还有这些
Alignment.TopStart(左顶点)、Alignment.Top(在顶部,左右对齐)、Alignment.TopEnd(右顶点)
Alignment.Start(左对齐,上下居中)、Alignment.Center(水平,垂直方向上居中)、Alignment.End(在右边,垂直方向上居中)Alignment.BottomStart(左边底部)、Alignment.Bottom(在底部,左右对齐)、Alignment.BottomEnd(右边底部)
backgroundImageSize 设置背景图片
Text().width('100%').height(100).fontColor('#000').backgroundColor(Color.Pink)
.backgroundImage($r('app.media.hua'))
.backgroundImageSize({ height:100, width:100 }) // 设置背景图片的宽和高
ImageSize 图片缩放的枚举值
ImageSize.Contain:等比例缩放背景图,当宽或高与组件尺寸相同停止缩放(可能存在留白)
ImageSize.Cover:等比例缩放背景图至图片完全覆盖组件范围(不会留白,但是有可能会让图片显示不全)
ImageSize.Auto:默认,原图尺寸

布局元素的组成
一般有:内容,padding,border,margin这4部分组件。
padding会撑大内容(与css一样)
如下图:借用一张网络图片

padding(会撑大内容)
@Entry
@Component
struct Index {
build() { // 表示开始进行构建界面
Column() { //Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
// padding(10) 4个方向的间距都是10
Text('hello world').backgroundColor(Color.Pink).padding(10).height(40)
// padding({ left: 20, right:20 }) 表示左右间距是20px
Text('hello world').backgroundColor(Color.Red).padding({ left: 20, right:20 }).height(40)
}
}
}
}

外边距 margin
@Entry
@Component
struct Index {
build() { // 表示开始进行构建界面
Column() { //Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
// padding(10) 4个方向的间距都是10
Text('hello world').backgroundColor(Color.Pink).padding(10).height(40).margin({left:10})
// padding({ left: 20, right:20 }) 表示左右间距是20px
Text('hello world').backgroundColor(Color.Red).padding({ left: 20, right:20 }).height(40).margin({left:10})
}
}
}
}
外边距 margin
@Entry
@Component
struct Index {
build() { // 表示开始进行构建界面
Column() { //Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
// padding(10) 4个方向的间距都是10
Text('hello world').backgroundColor(Color.Pink).padding(10).height(40).margin({left:10})
// padding({ left: 20, right:20 }) 表示左右间距是20px
Text('hello world').backgroundColor(Color.Red).padding({ left: 20, right:20 }).height(40).margin({left:10})
}
}
}
}

边框:border
@Entry
@Component
struct Index {
build() { // 表示开始进行构建界面
Column() { //Column(列) 使用之后,里面的元素默认是水平居中的,解决办法子元素设置 width
Row() {
Text('登录').fontColor(Color.Red).border({
width:1, // 线宽(必须)
color: Color.Red, // 颜色
style:BorderStyle.Solid // 线的类型 枚举值
}).padding(10).height(40).margin({left:10, right:10})
Text('注册').border({
width:{
top:1, // 顶部边框
bottom:1 // 底部的边框
}, // 线宽(必须)
color: {
top: Color.Brown, //顶部边框的颜色
bottom: '#FB7299' //底部边框的颜色
},
style:BorderStyle.Solid // 线的类型 枚举值
}).padding(10).height(40).margin({left:10, right:10})
}
}
}
}

圆角 borderRadius(10)
borderRadius(10): // 4个方向上都是10
borderRadius({
topLeft:10, //左上角
topRight:10, // 右上角
bottomLeft: 10, // 左下角
bottomRight:10 // 右下角
})
设置正圆
// 设置正圆,宽度和高度一样,圆角是宽度和高度的一半。
Text('正圆').width(100).height(100).backgroundColor(Color.Green).borderRadius(50)

设置胶囊按钮
// 设置胶囊按钮,圆角是高度的一半,文字水平居中
Text('胶囊按钮').width(100).height(40).textAlign(TextAlign.Center).backgroundColor(Color.Pink).borderRadius(20)

登录页面
通过上面我们学习的知识 一起来做一个登录界面复习一下
@Entry
@Component
struct Index {
@State UserImgSrc: string = 'https://p9-passport.byteacctimg.com/img/user-avatar/473f3e32c874a82e2cf6f844ba77e362~160x160.png';
@State userImgWidth: number = 60
build() {
// Column(列) 使用之后,里面的元素默认是水平居中的
Column({space:20}){ // 列中的子元素垂直方向是20的间距
Row(){
// 设置图片的宽高,并且设置为圆形
Image(this.UserImgSrc).width(this.userImgWidth).borderRadius(this.userImgWidth/2)
}.margin({ top: 20 }).margin({ bottom:20}) //距离上一个元素和下一个元素之间的间距
TextInput({ placeholder:'请输入用户名称' })
TextInput({
placeholder: '请输入密码'
}).type(InputType.Password)
Button('登录').width('100%')
Row(){
Text('前往注册').margin({ right:10})
Text('忘记密码')
}
}.width('100%').padding(20) // 左右两边的间距20
}
}

信息标记组件 Badge
@Entry
@Component
struct Index {
build() {
Column(){
// 角标组件现在在图片上
Badge({
count:1011, // 角标数值,小于等于0且小于maxCount时不显示信息标记。
maxCount: 199,// 最大消息数,超过最大消息时仅显示 maxCount+。如:199+
position:BadgePosition.RightTop, // 角标的位置,右上角
style:{
fontSize:12, // 字体大小
badgeSize:18,// 圆形大小
badgeColor:'#FF0000' //角标的颜色
}
}){
Image($r('app.media.siteng')).width(200)
}
}
}
}

BadgePosition枚举说明
| 名称 | 值 | 说明 |
|---|---|---|
| BadgePosition.RightTop | 0 | 圆点显示在右上角。 |
| BadgePosition.Right | 1 | 圆点显示在右侧纵向居中。 |
| BadgePosition.Left | 2 | 圆点显示在左侧纵向居中。 |
鸿蒙图片、布局元素、信息标记组件Badge的更多相关文章
- iOS开发——UI篇OC篇&不规则排列的图片布局
不规则排列的图片布局 一直在500px上看照片,发照片.以前看它的首页图片展示就只是觉得好看,洋气,也没想过自己在iOS上实现一下.昨天不知怎么的就开始想其中的算法了,现在我把思考的过程在这里贴出来分 ...
- Javascript版-显示相应图片的详细信息
Hi All, 分享一个通过JS来显示相应图片的详细信息. 需求:进入页面时,动态加载图片信息:当鼠标移动到某一图片上时,则显示该图片的大图片并显示相应说明信息:当鼠标移开图片时,清除新创建的元素. ...
- Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件
UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...
- 第六十四节,html文档布局元素
html文档布局元素 学习要点: 1.文档元素总汇 2.文档元素解析 本章主要探讨HTML5中文档元素,文档元素的主要作用是划分各个不同的内容,让整个布局清晰明快.让整个布局元 ...
- 图片布局css
对于平时项目开发中,经常要展示图片.什么水平居中显示,垂直居中显示,水平或垂直居中显示...我们的发际线就是这样往后退的. 接下来要讲的就是对于各种图片布局的css实现(这里针对的是img标签的不会使 ...
- THML文档布局元素
学习要点: 1.文档元素总汇 2.文档元素解析 一.文档元素总汇 文档元素基本没有什么实际作用效果,主要目的是在页面布局时区分各个主题和概念. 元素名称 ...
- 【轻松前端之旅】元素,标记,属性,<html>标签
HTML文档是由HTML元素定义的. HTML元素(element)指的是从开始标签(start tag)到结束标签(end tag)的所有代码. 有些元素会使用简写记法,如<img src=' ...
- 用C#读取图片的EXIF信息的方法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- html5--2.9新的布局元素(5)-hgroup/address
html5--2.9新的布局元素(5)-hgroup/address 学习要点 了解hgroup/address元素的语义和用法 通过实例理解hgroup/address元素的用法 对照新元素布局与d ...
- html5--2.7新的布局元素(4)-time
html5--2.7新的布局元素(4)-time 学习要点 了解微格式的概念 掌握time元素的用法 微格式的概念 HTML5中的微格式,是一种利用HTML5中的新标签对网页添加附加信息的方法,附加信 ...
随机推荐
- .NET周刊【3月第2期 2025-03-09】
国内文章 记一次.NET内存居高不下排查解决与启示 https://www.cnblogs.com/huangsheng/p/18731382 本文讲述了一个ASP.NET Core gRPC服务迁移 ...
- windows 10 平台使用命令行批量获取一个文件夹下所有文件的路径
1 打开命令行, 定位路径到指定磁盘 2 使用cd命令定位到指定路径 3 输入以下命令, 想要的结果就保存在了filename.txt中 dir /b/s filename.txt 结果:
- C# 中比较实用的关键字,基础高频面试题!
前言 在C#编程中关键字是构建逻辑和实现功能的基石,它承载着编程语言的语法规则和编程智慧.熟练掌握这些基础高频关键字对提升编程能力和面试表现至关重要,它们是日常开发和解决复杂问题的关键. DotNet ...
- linux 根目录扩容方法
准备知识 linux volume 1.(PV)physical volume disk : 物理硬盘 物理硬盘需要转换成lvm(logic volume manage)可识别的状态,将磁盘的syst ...
- 记录一个命令 可以在linux很方便的安装一些软件
小鱼的一键安装系列 wget http://fishros.com/install -O fishros && . fishros 一键安装:ROS(支持ROS和ROS2,树莓派Jet ...
- Next.js中间件权限绕过漏洞分析(CVE-2025-29927)
本文代码版本为next.js-15.2.2 本篇文章首发在先知社区:https://xz.aliyun.com/news/17403 一.漏洞概述 CVE-2025-29927是Next.js框架中存 ...
- 《机器人SLAM导航核心技术与实战》第1季:第1章_ROS入门必备知识
<机器人SLAM导航核心技术与实战>第1季:第1章_ROS入门必备知识 视频讲解 [第1季]1.第1章_ROS入门必备知识-视频讲解 [第1季]1.1.第1章_ROS入门必备知识-ROS简 ...
- Java提交到MySQL数据库出现中文乱码
1)使用文本或者链接地址写到代码中(不推荐)时,实例如下: jdbc:mysql://localhost:3306/tms?useUnicode=true&characterEncoding= ...
- 服务端获取实际IP工具类
import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHo ...
- 康谋分享 | 直面AD/ADAS快速开发挑战:IVEX自动驾驶场景管理及分析平台!
过去十年,自动驾驶和高级驾驶辅助系统 (AD/ADAS) 软件和硬件的开发成为了各大汽车公司的主要投资目标之一.各大汽车公司对 AD/ADAS 持续不断的投资加快了 AD/ADAS 组件的开发周期,但 ...