暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

12. 快速上手!HarmonyOS4.0 Panel容器组件详解

原创 若城 2024-05-18
550

Table of Contents

本章内容概要

image.png

Panel详解

可滑动面板,提供一种轻量的内容展示窗口,方便在不同尺寸中切换。
使用方式: Panel(show: boolean)
**通过show
注意:
如果设置为false时,则不占位隐藏。Visible.None或者show之间有一个生效时,都会生效不占位隐藏。

PanelType枚举

名称 描述
Minibar 提供minibar和类全屏展示切换效果。
Foldable 内容永久展示类,提供大(类全屏)、中(类半屏)、小三种尺寸展示切换效果。
Temporary 内容临时展示区,提供大(类全屏)、中(类半屏)两种尺寸展示切换效果。

PanelMode枚举

名称 描述
Mini 类型为minibar和foldable时,为最小状态;类型为temporary,则不生效。
Half 类型为foldable和temporary时,为类半屏状态;类型为minibar,则不生效。
Full 类全屏状态。

PanelType�.Minibar

mode类型 效果图
PanelMode.Mini tutieshi_412x690_10s.gif
PanelMode.Full tutieshi_412x690_9s.gif

PanelMode.Mini 代码示例

/**
 * @Author: 若城
 * @Description:
 */
@Entry
	@Component
	struct Panel_note {
		@State MinibarShow:boolean = false
		@State FoldableShow:boolean = false
		@State TemporaryShow:boolean = false

		build() {
			Row() {
				Column() {
					Row(){
						Button('Minibar').fontSize(20).padding(10).onClick(()=>{
							this.MinibarShow = !this.MinibarShow
						})
						Button('Foldable').fontSize(20).padding(10).onClick(()=>{
							this.FoldableShow = !this.FoldableShow

						})
						Button('Temporary').fontSize(20).padding(10).onClick(()=>{
							this.TemporaryShow = !this.TemporaryShow

						})
					}.width('100%')
						.height(100)
						.justifyContent(FlexAlign.SpaceEvenly)

					//         Minibar
					Panel(this.MinibarShow){
						Column(){
							Text('Minibar效果演示').fontSize(20)
						}
					}.type(PanelType.Minibar)

				}
				.width('100%')
					.height('100%')
			}
			.height('100%')
				.width('100%')

		}
	}

PanelMode.Full代码示例

/**
 * @Author: 若城
 * @Description:
 */
@Entry
	@Component
	struct Panel_note {
		@State MinibarShow:boolean = false
		@State FoldableShow:boolean = false
		@State TemporaryShow:boolean = false

		build() {
			Row() {
				Column() {
					Row(){
						Button('Minibar').fontSize(20).padding(10).onClick(()=>{
							this.MinibarShow = !this.MinibarShow
						})
						Button('Foldable').fontSize(20).padding(10).onClick(()=>{
							this.FoldableShow = !this.FoldableShow

						})
						Button('Temporary').fontSize(20).padding(10).onClick(()=>{
							this.TemporaryShow = !this.TemporaryShow

						})
					}.width('100%')
						.height(100)
						.justifyContent(FlexAlign.SpaceEvenly)

					//         Minibar
					Panel(this.MinibarShow){
						Column(){
							Text('Minibar效果演示').fontSize(20)
						}
					}.type(PanelType.Minibar).mode(PanelMode.Full)

				}
				.width('100%')
					.height('100%')
			}
			.height('100%')
				.width('100%')

		}
	}

PanelType�.Foldable

mode类型 效果图
PanelMode.Mini� tutieshi_412x690_7s.gif
PanelMode.Half� tutieshi_412x690_17s.gif
PanelMode.Full tutieshi_412x690_18s.gif

PanelMode.Mini� 代码示例

Panel(this.FoldableShow){
	Column(){
		Text('Minibar效果演示=> Foldable').fontSize(20)
	}
}.type(PanelType.Foldable).mode(PanelMode.Mini)

PanelMode.Half� 代码示例


Panel(this.FoldableShow) {
	Column() {
		Text('Minibar效果演示=> Foldable').fontSize(20)
	}
}.type(PanelType.Foldable).mode(PanelMode.Half)

PanelMode.Full 代码示例

Panel(this.FoldableShow) {
	Column() {
		Text('Minibar效果演示=> Foldable').fontSize(20)
		Divider().strokeWidth(3)
		Text('若城').fontSize(30)
	}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}.type(PanelType.Foldable).mode(PanelMode.Full)

PanelType.Temporary�

mode类型 效果图
PanelMode.Half� tutieshi_412x690_6s.gif
PanelMode.Full tutieshi_412x690_8s.gif

PanelMode.Half� 代码示例

Panel(this.TemporaryShow) {
	Column() {
		Text('Minibar效果演示=> Temporary').fontSize(20)
		Divider().strokeWidth(3)
		Text('若城').fontSize(30)
	}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}.type(PanelType.Temporary).mode(PanelMode.Half)

PanelMode.Full� 代码示例

Panel(this.TemporaryShow) {
	Column() {
		Text('Minibar效果演示=> Temporary').fontSize(20)
		Divider().strokeWidth(3)
		Text('若城').fontSize(30)
	}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}.type(PanelType.Temporary).mode(PanelMode.Full)

指定Panel的背景蒙层

image.png

代码示例

Panel(this.TemporaryShow) {
	Column() {
		Text('自定义蒙版').fontSize(20)
		Divider().strokeWidth(3)
		Button('关闭').fontSize(20).padding(10).onClick(()=>{
			this.TemporaryShow = !this.TemporaryShow

		})
		Text('若城').fontSize(30)
	}.width('100%').justifyContent(FlexAlign.SpaceEvenly)
}.type(PanelType.Temporary).mode(PanelMode.Half).backgroundMask('#999')
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论