reactnative:无法让 ellipsizeMode 工作

问题描述 投票:0回答:5

我正在尝试截断我的反应本机应用程序中的文本。我决定使用“ellipsizeMode”属性,但我无法让它工作。

我写了一个问题的演示:

'use strict';

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  View,
} from 'react-native';


export class EllipsizeModeTest extends Component {
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.text}>{'first part | '}</Text>
                <Text style={styles.text} numberOfLines={1} ellipsizeMode={'tail'}>
                    {'a text too long to be displayed on the screen'}
                </Text>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flexDirection: 'row',
    },
    text: {
        fontSize: 20,
    }
});

现在文本没有被截断,知道为什么吗?

javascript reactjs react-native
5个回答
18
投票

我遇到了同样的问题,将元素的大小绑定到一个值就足够了。所以如果你定义宽度,或者添加一个弹性值就可以了。

<View style={{width: 200}}><Text ellipsizeMode='tail' numberOfLines={1}></View>

1
投票

您需要在文本元素上设置宽度,以便它知道何时......它

const styles = StyleSheet.create({
    container: {
        flexDirection: 'row',
    },
    text: {
        fontSize: 20,
        width: 100
    }
});

Then you get this


0
投票

别忘了添加

numberOfLines={1}
。我添加了它并开始工作。

样品:

<Text numberOfLines={1} 
    ellipsizeMode= 'tail' 
    style={{ 
        maxHeight: 30, 
        marginStart: 16 }}>
           My Long Long text
</Text>

-1
投票

尝试将字符串分配给

ellipsizeMode
(删除大括号):

<Text style={styles.text} numberOfLines={1} ellipsizeMode='tail'>

-1
投票

尝试为组件设置宽度样式属性

'use strict';

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  View,
} from 'react-native';


export class EllipsizeModeTest extends Component {
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.text}>{'first part | '}</Text>
                <Text style={styles.text} numberOfLines={1} ellipsizeMode={'tail'}>
                    {'a text too long to be displayed on the screen'}
                </Text>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flexDirection: 'row',
    },
    text: {
        fontSize: 20,
        width: 100
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.