[HarmonyOS]鸿蒙普通搜索(只是静态的待优化中,无接口无法获取数据)
·
普通搜索视图:

举例子:随便写的一个index.ets为了方便跳转搜索页面
index.ets

代码:
@Entry
@Component
struct Index {
@Provide pageStack: NavPathStack = new NavPathStack()
build() {
// 提供页面栈对象
Navigation(this.pageStack){
Button('搜索')
.onClick(()=>{
this.pageStack.pushPath({name:'SearchView'})
})
}
.hideTitleBar(true)
.mode(NavigationMode.Stack)
}
}
首先是先从首页跳转过来(跳转之前要配路由)
默认是没有route_map.json,需要自己新建

代码如下:
{
"routerMap": [
{
"name": "SearchView",
"pageSourceFile": "src/main/ets/view/SearchView.ets",
"buildFunction": "SearchViewBuilder",
"data": {
"description": "this is SearchView"
}
}
]
}
需要配置权限:代码:
"routerMap": "$profile:route_map",

在src下新建的两个view目录(新建SearchView(搜索页)SearchResultView )

源代码如下:(SearchView)
import { window } from '@kit.ArkUI'
@Builder
function SearchViewBuilder() {
NavDestination() {
SearchView()
}
.hideTitleBar(true)
}
@Component
struct SearchView {
@StorageProp('safeTop') safeTop: number = 0
@State keyword: string = ''
@Consume pageStack: NavPathStack
aboutToAppear(): void {
window.getLastWindow(getContext())
.then((win) => {
win.setWindowSystemBarProperties({ statusBarContentColor: '#FFFFFF' })
})
}
aboutToDisappear(): void {
window.getLastWindow(getContext())
.then((win) => {
win.setWindowSystemBarProperties({ statusBarContentColor: '#000000' })
})
}
build() {
Column() {
// search
Row() {
Image($r('app.media.ic_public_left'))
.width(24)
.aspectRatio(1)
.fillColor(Color.White)
.margin(13)
.onClick(() => {
this.pageStack.pop(true)
})
Search({ placeholder: '商品关键字...', value: $$this.keyword })
.searchIcon({ src: $r('app.media.ic_public_search'), color: Color.Gray })
.placeholderColor(Color.Gray)
.placeholderFont({ size: 14 })
.searchButton('搜索', { fontSize: 14, fontColor:Color.Red })
.backgroundColor(Color.White)
.textFont({ size: 14 })
.layoutWeight(1)
.padding(0)
.margin(0)
.height(36)
.caretStyle({ color: Color.Red })
.defaultFocus(true)
.onSubmit((value) => {
this.pageStack.pushPathByName('SearchResultView', value)
})
}
.padding({ top: this.safeTop, right: 16 })
.linearGradient({
angle: 135,
colors: [['#d13871', 0], ['#cc5a37', 1]]
})
}
}
}
对搜索按钮解释
// 创建一个搜索组件,设置占位符和初始值
Search({ placeholder: '商品关键字...', value: $$this.keyword })
// 配置搜索图标,包括图标资源和颜色
.searchIcon({ src: $r('app.media.ic_public_search'), color: Color.Gray })
// 设置占位符颜色
.placeholderColor(Color.Gray)
// 设置占位符字体大小
.placeholderFont({ size: 14 })
// 配置搜索按钮文本和样式
.searchButton('搜索', { fontSize: 14, fontColor:Color.Red })
// 设置组件背景色
.backgroundColor(Color.White)
// 设置文本字体大小
.textFont({ size: 14 })
// 设置布局权重
.layoutWeight(1)
// 移除内边距
.padding(0)
// 移除外边距
.margin(0)
// 固定组件高度
.height(36)
// 设置光标样式
.caretStyle({ color: Color.Red })
// 设置默认焦点
.defaultFocus(true)
// 定义提交事件处理函数
.onSubmit((value) => {
// 提交时将搜索结果页面添加到页面栈
this.pageStack.pushPathByName('SearchResultView', value)
})
// 添加顶部和右侧内边距
}.padding({ top: this.safeTop, right: 16 })
// 设置线性渐变样式
.linearGradient({
angle: 135,
colors: [['#d13871', 0], ['#cc5a37', 1]]
})
更多推荐

所有评论(0)