自动调整 Textview Android

Posted

技术标签:

【中文标题】自动调整 Textview Android【英文标题】:Auto Adjust Textview Android 【发布时间】:2013-07-16 22:21:35 【问题描述】:

我终于找到了根据 textview 的高度调整文本大小的代码。Source,但我不知道如何在这个函数中传递文本,我的文本是从另一个意图开始的

public int getHeightOfMultiLineText(String text,int textSize, int maxWidth) 
        TextPaint paint = new TextPaint();
        paint.setTextSize(textSize);
        int index = 0;
        int linecount = 0;
        while(index < text.length()) 
            index += paint.breakText(text,index,text.length(),true,maxWidth,null);
            linecount++;
        

        Rect bounds = new Rect();
        paint.getTextBounds("Yy", 0, 2, bounds);
        // obtain space between lines
        double lineSpacing = Math.max(0,((linecount - 1) * bounds.height()*0.25)); 

        return (int)Math.floor(lineSpacing + linecount * bounds.height());

    

【问题讨论】:

将文本保存为String并传递给getHeightofMultiLineText(ur_string_text,12,10); 你是不是出错了? 如何传递给 tv.setText(receivingdata);到这个功能?? 嘿,在函数中实例化textview,然后设置文本不是吗? 【参考方案1】:

你可以使用 urTextView.getText().toString() 将 TextView 的文本作为字符串获取

TextView urTextView;
String text = urTextView.getText().toString();

int textSize = 100;
int maxHeight = 50;
while(getHeightOfMultiLineText(text,textSize,maxWidth) > maxHeight)
    textSize--;

这应该可行。

【讨论】:

我正在获取这样的数据 tv.setText(receivingdata);如何传递给函数 收到数据后,做String text = tv.getText().toString();并传递给函数。 然后我必须删除 tv.setText(receivingdata); 不,您不必这样做。文本在 textview tv 中设置。您现在要做的就是使用此文本并更改其大小。所以只需添加我发布的内容,然后检查。 如果我修复了 xml 中的 textview 大小假设为 50,那么它将文本设置为 50,而不检查 int textSize = 100;,我在 main() 中调用此函数?

以上是关于自动调整 Textview Android的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何自动调整 TextView 的大小以适合固定高度的容器?

在自动调整 TextView 大小时输入文本时 UITableView 闪烁/口吃

Android TextView自动调整字体大小(官方)

Android根据文字长度自动调整字号的TextView

内视图自动调整外视图大小

textView自动调整文本以填充宽度