Skip to content

文字选择器

文字选择器一般用于省市联动

效果

单列效果

多列效果

子组件

参数

range

滑动的范围

selected

选中的序号

属性

defaultPickerItemHeight

每个选项的高度

disappearTextStyle

第一个和最后一个的样式

textStyle

普通文本样式

selectedTextStyle

选中的样式

selectedIndex

选中的索引

canLoop

是否循环

divider

分割线样式

事件

onChange

bash
.onChange((value:string|string[],index:number|number[])=>{
    console.info('Picker item changed, value: ' + value + ', index: ' + index);
})

示例代码

单列

js
@Entry
@Component
struct Index7 {
    private select:number = 1;
    private fruits:string[] = ["天津","北京","上海","杭州","无锡"]

    build() {
       Column(){
           TextPicker({range:this.fruits,selected: this.select})
               .width('100%')
               // 设置 每个选项的高度
               .defaultPickerItemHeight(45)
               // 第一个 和最后一个 样式
               .disappearTextStyle({
                   color: Color.Red,
                   font: {
                       size: '18fp',
                       weight: FontWeight.Bold
                   }
               })
                // 普通文本
               .textStyle({
                   color: Color.Green,
                   font: {
                       size: '18fp',
                       weight: FontWeight.Bold
                   }
               })
                // 选中样式
               .selectedTextStyle({
                   color: Color.Brown,
                   font: {
                       size: '18fp',
                       weight: FontWeight.Bold
                   }
               })
               // 能否自动循环
               .canLoop(false)
               // 分割线
               .divider({
                   strokeWidth: '4px',
                   startMargin: 0,
                   endMargin: 0,
                   color: 'red'
               })
               // 改变的时候调用的方法
               .onChange((value:string|string[],index:number|number[])=>{
                   console.info('Picker item changed, value: ' + value + ', index: ' + index);
               })
       }
    }
}

多列

  • 注意数据格式
js

// xxx.ets
class bottom {
    bottom:number = 50;
}
let bott:bottom = new bottom();
@Entry
@Component
struct Index7 {
    private select: number = 1;
    private apfruits: string[] = ['apple1', 'apple2', 'apple3', 'apple4'];
    private orfruits: string[] = ['orange1', 'orange2', 'orange3', 'orange4'];
    private pefruits: string[] = ['peach1', 'peach2', 'peach3', 'peach4'];
    private multi: string[][] = [this.apfruits, this.orfruits, this.pefruits];
    private cascade: TextCascadePickerRangeContent[] = [
        {
            text: '辽宁省',
            children: [{ text: '沈阳市', children: [{ text: '沈河区' }, { text: '和平区' }, { text: '浑南区' }] },
                { text: '大连市', children: [{ text: '中山区' }, { text: '金州区' }, { text: '长海县' }] }]
        },
        {
            text: '吉林省',
            children: [{ text: '长春市', children: [{ text: '南关区' }, { text: '宽城区' }, { text: '朝阳区' }] },
                { text: '四平市', children: [{ text: '铁西区' }, { text: '铁东区' }, { text: '梨树县' }] }]
        },
        {
            text: '黑龙江省',
            children: [{ text: '哈尔滨市', children: [{ text: '道里区' }, { text: '道外区' }, { text: '南岗区' }] },
                { text: '牡丹江市', children: [{ text: '东安区' }, { text: '西安区' }, { text: '爱民区' }] }]
        }
    ]

    build() {
        Column() {
            TextPicker({ range: this.apfruits, selected: this.select })
                .onChange((value: string | string[], index: number | number[]) => {
                    console.info('Picker item changed, value: ' + value + ', index: ' + index);
                })
          .margin(bott)


            TextPicker({ range: this.multi })
                .onChange((value: string | string[], index: number | number[]) => {
                    console.info('TextPicker 多列:onChange ' + JSON.stringify(value) + ', ' + 'index: ' + JSON.stringify(index));
                })
             .margin(bott)


            TextPicker({ range: this.cascade })
                .onChange((value: string | string[], index: number | number[]) => {
                    console.info('TextPicker 多列联动:onChange ' + JSON.stringify(value) + ', ' + 'index: ' + JSON.stringify(index));
                })

        }
    }
}