Android TextView 动态尺寸截断文本的方式
创始人
2024-08-19 00:30:04
0

在Android中,可以使用TextPaint类中的getTextBounds方法来动态确定TextView的文本尺寸。以下是一个示例代码,演示如何使用这种方法来截断文本:

public class MainActivity extends AppCompatActivity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text_view);

        // 设置原始文本
        String originalText = "This is a long text that needs to be truncated dynamically.";
        textView.setText(originalText);

        // 获取TextView的宽度
        int textViewWidth = textView.getWidth();

        // 获取TextView的Paint对象
        TextPaint textPaint = textView.getPaint();

        // 设置最大的文本宽度
        int maxWidth = textViewWidth - textView.getPaddingLeft() - textView.getPaddingRight();

        // 获取文本的尺寸
        Rect bounds = new Rect();
        textPaint.getTextBounds(originalText, 0, originalText.length(), bounds);

        // 如果文本的宽度大于TextView的宽度,则进行截断操作
        if (bounds.width() > maxWidth) {
            // 获取截断文本的尺寸
            textPaint.getTextBounds("...", 0, 3, bounds);

            // 获取截断文本的宽度
            int ellipsisWidth = bounds.width();

            // 根据TextView的宽度计算需要截断的文本长度
            int textLength = textPaint.breakText(originalText, true, maxWidth - ellipsisWidth, null);

            // 截断文本并添加省略号
            String truncatedText = originalText.substring(0, textLength) + "...";
            textView.setText(truncatedText);
        }
    }
}

在这个例子中,我们首先获取了TextView的宽度,并计算了最大的文本宽度。然后,使用TextPaint类中的getTextBounds方法来获取原始文本以及省略号的尺寸。如果原始文本的宽度大于最大宽度,我们就使用breakText方法来计算需要截断的文本长度,并将省略号添加到截断的文本中。最后,将截断的文本设置到TextView中。

请注意,上述代码仅在onCreate方法中演示了一次性截断文本的过程。如果你希望在TextView的尺寸发生变化时动态截断文本,你需要将相应的代码放入适当的生命周期方法中,例如onGlobalLayout方法或自定义的尺寸变化回调方法中。

相关内容

热门资讯

外挂绝活!uupoker透视,... 外挂绝活!uupoker透视,扑克之星辅助-总是是真的有辅助教程(哔哩哔哩)1、点击下载安装,扑克之...
外挂妙计!智星菠萝可以辅助吗,... 外挂妙计!智星菠萝可以辅助吗,佛手在线大菠萝为什么都输-一贯真的是有辅助方法(哔哩哔哩)1、下载好佛...
外挂攻略!来玩app 德州 辅... 外挂攻略!来玩app 德州 辅助,约局吧如何查看是否有挂-果然一直总是有辅助方法(哔哩哔哩)1、每一...
外挂烘培!sohoo辅助,po... 外挂烘培!sohoo辅助,pokeplus脚本-真是有辅助教程(哔哩哔哩)一、pokeplus脚本可...
外挂大纲!大菠萝免费辅助,哈糖... 外挂大纲!大菠萝免费辅助,哈糖大菠萝软件下载-切实存在有辅助工具(哔哩哔哩)1、哈糖大菠萝软件下载透...
外挂教程书!聚星ai辅助工具激... 外挂教程书!聚星ai辅助工具激活码,德普之星透视辅助软件激活码-原来有辅助技巧(哔哩哔哩)1、很好的...
外挂资料!佛手大菠萝有挂吗,拱... 外挂资料!佛手大菠萝有挂吗,拱趴大菠萝万能挂-竟然一直总是有辅助脚本(哔哩哔哩)1、超多福利:超高返...
外挂攻略!aa poker辅助... 外挂攻略!aa poker辅助,德州局透视-原来是真的有辅助教程(哔哩哔哩)1、许多玩家不知道德州局...
外挂手筋!德州局脚本,poke... 外挂手筋!德州局脚本,pokemomo辅助工具-原来是有辅助脚本(哔哩哔哩)1、玩家可以在pokem...
外挂办法!pokermaste... 外挂办法!pokermaster辅助器,pokerworld修改器-好像是真的有辅助方法(哔哩哔哩)...