uni-app 4.33版本picker内容超长时没有截取显示

发布于 1周前 作者 vueper 来自 Uni-App

uni-app 4.33版本picker内容超长时没有截取显示

操作步骤:

  • 必现

预期结果:

  • 超长显示…

实际结果:

  • 超长直接截取

bug描述:

  • 在安卓与iOS,超长显示…,在鸿蒙,超长直接截取样式不统一

附件:

image image

信息类别 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC操作系统版本 win10
HBuilderX类型 Alpha
HBuilderX版本 4.34
手机系统 HarmonyOS NEXT
手机系统版本 HarmonyOS NEXT Developer Beta2
手机厂商 华为
手机机型 mate60
页面类型 vue
Vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

1 回复

在uni-app 4.33版本中,如果picker组件的内容超长而没有截取显示,这通常是由于picker组件本身的样式限制或者父容器的布局问题导致的。为了解决这个问题,你可以通过以下几种方式来处理超长内容的显示问题,包括CSS样式调整、动态内容截取以及自定义picker组件。以下是一些代码示例:

1. 使用CSS样式调整内容显示

你可以尝试调整picker组件的样式,使其内容在超出显示范围时能够滚动或截断显示。然而,由于picker组件的特殊性,直接对其内容进行样式调整可能有限。你可以尝试调整父容器的样式,确保内容不会溢出。

/* 在App.vue或相关页面的样式中 */
.picker-container {
    overflow: hidden; /* 防止内容溢出 */
    text-overflow: ellipsis; /* 文本超出时显示省略号 */
    white-space: nowrap; /* 禁止换行 */
}

但请注意,picker组件内部的内容通常由系统控件渲染,直接应用CSS样式可能不会有预期效果。

2. 动态截取内容

在数据绑定到picker之前,你可以预处理数据,截取超长内容并添加省略号。

// 假设你的数据数组为items
function truncateText(text, maxLength) {
    if (text.length > maxLength) {
        return text.substring(0, maxLength) + '...';
    }
    return text;
}

let truncatedItems = items.map(item => ({
    ...item,
    value: truncateText(item.value, 10) // 假设截取到10个字符
}));

// 然后将truncatedItems绑定到picker组件

3. 自定义picker组件

如果上述方法不能满足需求,你可以考虑自定义一个picker组件,使用scroll-view和列表渲染来实现。这样你可以完全控制内容的显示方式和样式。

<template>
    <view class="custom-picker">
        <scroll-view scroll-y="true" :scroll-into-view="activeIndex">
            <view v-for="(item, index) in items" :key="index" :id="'item-' + index" class="picker-item">
                {{ truncateText(item.value, 10) }}
            </view>
        </scroll-view>
    </view>
</template>

<script>
export default {
    data() {
        return {
            activeIndex: 'item-0',
            items: [...] // 你的数据数组
        };
    },
    methods: {
        truncateText(text, maxLength) {
            // 同上
        }
    }
};
</script>

<style>
.custom-picker {
    height: 300px; /* 根据需要调整 */
}
.picker-item {
    height: 50px; /* 根据需要调整 */
    line-height: 50px;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
</style>

以上代码提供了一个自定义picker组件的基本框架,你可以根据实际需求进一步调整和完善。

回到顶部