# SlidingLinkageLayout
**Repository Path**: caijiabin_sjz/sliding-linkage-layout
## Basic Information
- **Project Name**: SlidingLinkageLayout
- **Description**: SlidingLinkageLayout是一个自定义组件,支持页面Scroll组件与List组件的联动滑动并支持吸顶。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-09-06
- **Last Updated**: 2024-09-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SlidingLinkageLayout
SlidingLinkageLayout是一个自定义组件,支持页面Scroll组件与List组件的联动滑动并支持吸顶。
## 简介
组件分为上下两部分内容区域,上半部分可自由滑动,滑动到底部可以带动下半部分向上滑动
,当下班部分触顶后可以吸顶,吸顶后下半部分的List组件可触发滑动,在未吸顶时,
下半部分的区域会整体滑动,不会触发List组件的滑动,只有在吸顶之后List组件才可以触发滑动,
如果List组件滑动到顶部,会触发下半部分的整体滑动,同时吸顶状态下List组件向下滑动时,可带动上半部分内容区域想下滑动。
- 支持List组件
- 支持嵌套滑动
- 支持吸顶效果
- 组件样式可自由配置
- 代码开源,安全可信
## 演示
> 
## 使用
#### 下载安装
`ohpm i @caijiabin/slidinglinkage`
OpenHarmony ohpm
环境配置等更多内容,请参考[如何安装 OpenHarmony ohpm 包](https://ohpm.openharmony.cn/#/cn/help/downloadandinstall)
#### 参数说明
| 参数名 | 类型 | 是否必须 | 描述 |
|:-------------|:-----------------------|:-----|:---------------------------|
| headerLayout | any | 是 | 外部传入的头部布局 |
| listItemLayout | any | 是 | 外部传入的List组件的item布局 |
| mainBgColor | string / ResourceColor | 否 | 主背景颜色,默认值:Color.Gray |
| floatWindowBgColor | string / ResourceColor | 否 | 底部浮动窗背景颜色,默认值:Color.White |
| listBgColor | string / ResourceColor | 否 | List组件背景颜色,默认值:Color.White |
| scrollbottomheight | number | 否 | 下半部分浮动窗距初始位置高度,默认值:0 |
#### 代码示例
```
@Builder
loadHeaderLayout(){
...
}
@Builder
loadListItem() {
ForEach(this.listDate, (text: number, i) => {
ListItem() {
Column() {
Text(text + '')
.fontSize(20)
}
.backgroundColor('#efefef')
.alignItems(HorizontalAlign.Center)
.padding(10)
.width('100%')
.onClick(() => {
promptAction.showToast({ message: text + '' })
})
}
})
}
SlidingLinkageLayout({ headerLayout: this.loadHeaderLayout,listItemLayout:(): void => { this.loadListItem() }})
```
+ 在使用时需要注意listItemLayout的布局,布局的数据是在父组件,包括数据展示点击事件等都交由父组件处理,所以在传递时要注意this指向问题,否则无法正常显示。
```
//错误写法
SlidingLinkageLayout({ headerLayout: this.loadHeaderLayout,listItemLayout: this.loadListItem})
//正确写法
SlidingLinkageLayout({ headerLayout: this.loadHeaderLayout,listItemLayout:(): void => { this.loadListItem() }})
```
## 注意事项
本项目仅供学习交流使用,禁止用于商业用途或非法用途!
## 开源协议
本项目基于 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html) ,请自由地享受和参与开源。
拷贝和借鉴代码,还请大家在引用时注明出处,万分感谢。