自动调整 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 的大小以适合固定高度的容器?