如何在使用Paint.getTextBounds时考虑新行

时间:2018-04-27 10:00:08

标签: android

我正在开发一个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函数)来估计文本高度。当文本的每一行都适合一行时,它确实可以正常工作。但是如果文本更长,它会自动转到下一行,从而使得行数比我想象的要多,而且文本不适合边界: Example

您可以从该图片中看到底部有些文字不适合。 是否有可能获得文本的边界,包括考虑新行字符的高度以及由于文本不适合一行的新行?或者还有其他方法吗?

0 个答案:

没有答案