首页 > 解决方案 > 使用 Paint.getTextBounds 时如何考虑换行

问题描述

我正在开发一个 android 应用程序,我想在不同的屏幕尺寸上放置文本。我想估计一个 TextView 的适当高度,以便文本适合其中。文本包含换行符(“\n”):

        TextView table3team1 ...
        ....
        Paint paint = new Paint();
        Rect bounds = new Rect();
        paint.setTypeface(table3team1.getTypeface());
        paint.setTextSize((float)scheddateminsize);
        String text = table3team1.getText().toString();
        paint.getTextBounds(text, 0, text.length(), bounds);

        int maxlines = 0;
        int lines = text.length() - text.replace("\n", "").length();
        maxlines = lines;

        int height_in_pixels = maxlines * bounds.height(); 

        table3team1.setMinHeight(height_in_pixels);
        table3team2.setMinHeight(height_in_pixels);

在上面的代码中,我通过将文本行数(换行字符数)乘以估计的一行高度(paint.getTextBounds 函数)来估计文本高度。当文本的每一行都适合一行时,它确实可以完美地工作。但是,如果文本较长,它会自动转到下一行,从而使行数比我想象的要多,并且文本不适合边界: 例子

您可以从该图像中看到底部的一些文本不适合。由于文本不适合一行,是否可以获得文本的边界,包括考虑换行符和换行符的高度?或者有没有其他方法可以做到这一点?

标签: android

解决方案


推荐阅读