TextView的文本缩小到指定宽度 [英] TextView text shrink to the given width
本文介绍了TextView的文本缩小到指定宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的活动一个TextView场。其字体大小为16。
它的文字是通过code设置。假设,如果我有一个大的文本,它应该缩小这个数据(即字体大小减少),而不是去到下一行。我该怎么办呢?
< TextView的机器人:ID =@ + ID / TextView的机器人:layout_width =400dp机器人:layout_height =WRAP_CONTENT机器人:文本=机器人:TEXTSIZE = 16SP/>
解决方案
我用,我按照我的要求创建了以下方法得到它。
私人无效autoScaleTextViewTextToHeight(TextView的电视)
{
字符串s = tv.getText()的toString()。
浮currentWidth = tv.getPaint()measureText(多个)。 浮phoneDensity = this.getResources()getDisplayMetrics()密度。 而(currentWidth>(REQUIRED_WIDTH * phoneDensity)){
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX,tv.getTextSize() - 1.0F);
currentWidth = tv.getPaint()measureText(多个)。
}
}
I have a textview field in my activity. Its font size is 16. Its text is set through code. Suppose if I am having a big text, it should shrink this data (i.e. font size reduces) instead of going to the next line. How can I do it?
<TextView android:id="@+id/textView" android:layout_width="400dp" android:layout_height="wrap_content" android:text="" android:textSize="16sp" />
解决方案
I got it by using the following method which I created according to my requirement.
private void autoScaleTextViewTextToHeight(TextView tv)
{
String s = tv.getText().toString();
float currentWidth = tv.getPaint().measureText(s);
float phoneDensity = this.getResources().getDisplayMetrics().density;
while(currentWidth > (REQUIRED_WIDTH * phoneDensity)) {
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() - 1.0f);
currentWidth = tv.getPaint().measureText(s);
}
}
这篇关于TextView的文本缩小到指定宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文