微信小程序 picker 组件不能自定义 取消和确定的文字 |自定义 picker

picker 组件不能自定义 取消和确定的文字 🐤


摘要 : 由于本人要做一个支持多语言的系统,在完成了多语言切换功能后发现了此问题,微信小程序实现多语言方案

picker 组件本身是不支持的自定义文字 🐤 🐤

后面就使用picker-view来实现(取消和确认可换词)

上图 🐤

在这里插入图片描述

上战歌(代码) 🐤

wxml

<view bindtap="pickerState">
  {{pickerArray[pickerIndex]}}
</view>
<picker-view indicator-class='pickerCol' bindchange="bindChange" class="{{ pickerShow ? 'show' : '' }}">
  <view class='btns'>
    <view bindtap="pickerState">取消</view>
    <view bindtap="getValue">确认</view>
  </view>
  <picker-view-column>
    <view wx:for="{{pickerArray}}" wx:key="index" style="line-height: 46px">{{item}}</view>
  </picker-view-column>
</picker-view>
<!-- 遮罩层 -->
<view class="overlay" wx:if="{{pickerShow}}"  bindtap="pickerState"></view>

wxss

/* 设置头部的取消和确定按钮 */
picker-view .btns {
  width: 100%;
  height: 100rpx;
  color: #07c160;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 5;
  border-bottom: 1rpx solid #f1f1f1;
}

picker-view .btns view {
  width: 20%;
  text-align: center;
  font-size: 32rpx;
}
.btns view:first-child {
  color: #666666;
}
picker-view {
  position: fixed;
  bottom: 0;
  left: 0;
  background-color: #fff;
  text-align: center;
  box-sizing: border-box;
  width: 100%;
  height: 0;
  z-index: 999;
}

/* 添加弹出的过渡动画 */
picker-view.show {
  height: 42%;
  transition: all 0.4s;
}

/* 设置单列数据的样式 */
picker-view-column {
  font-size: 32rpx;
  margin-top: 47rpx;
}

/* 设置选中框的样式 */
.pickerCol {
  width: 100%;
  height: 46px;
  line-height: 46px;
  color: #baa076;
  border-top: 1rpx solid #f2f3f5;
  border-bottom: 1rpx solid #f2f3f5;
}

/* 添加前面的三角形 */
.pickerCol::before {
  width: 10rpx;
  height: 28rpx;
  position: absolute;
  left: 200rpx;
  top: 15rpx;
  background-image: url(//demo.17weiju.com/wxsh/wxsh/image/food-sjx.png);
  background-size: 100% 100%;
}

/* 这里的两个伪类有默认样式(两条线),但是介于我已经重写了before,这里就取消after的显示 */
.pickerCol::after {
  display: none;
}

/* 遮罩层 */
.overlay {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.4);
}

js

Page({
  data: {
    pickerArray: ['中国', '美国', '俄罗斯', '日本'],
    pickerShow: true,
    array: ['召唤师', '爱上丢'],
    pickerIndex: 0,
    selIndex: 0

  },
  // 当前选中的
  bindChange(e) {
    this.setData({
      selIndex: e.detail.value[0],
    })
  },
  // 是否展示
  pickerState() {
    this.setData({
      pickerShow: !this.data.pickerShow
    })
  },
  // 确认按钮
  getValue() {
    this.setData({
      pickerIndex: this.data.selIndex,
    })
    this.pickerState()
  },
})

在当前参考链接中进行的整改

最后发现我是小丑,本来想根据切换的语言来显示取消确定文字为翻译后的语言 🐤

在这里插入图片描述

最后发现这个会根据手机系统的语言来显示文字,不需要做多语言,笑死 🐤

🐤

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值