100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android textview设置大小 android – 如何缩放/调整文本大小以适应TextView?

android textview设置大小 android – 如何缩放/调整文本大小以适应TextView?

时间:2020-07-10 18:00:02

相关推荐

android textview设置大小 android – 如何缩放/调整文本大小以适应TextView?

我试图创建一个方法来调整文本视图中的多行文本,使其适合在TextView的边界(X和Y维度)。

目前,我有一些东西,但它所做的是调整文本大小,只是文本的第一个字母/字符填充TextView的尺寸(即只有第一个字母是可见的,它是巨大的)。我需要它来适应TextView的边界内的文本的所有行。

这里是我到目前为止:

public static void autoScaleTextViewTextToHeight(TextView tv)

{

final float initSize = tv.getTextSize();

//get the width of the view's back image (unscaled)....

float minViewHeight;

if(tv.getBackground()!=null)

{

minViewHeight = tv.getBackground().getIntrinsicHeight();

}

else

{

minViewHeight = 10f;//some min.

}

final float maxViewHeight = tv.getHeight() - (tv.getPaddingBottom()+tv.getPaddingTop())-12;// -12 just to be sure

final String s = tv.getText().toString();

//System.out.println(""+tv.getPaddingTop()+"/"+tv.getPaddingBottom());

if(minViewHeight >0 && maxViewHeight >2)

{

Rect currentBounds = new Rect();

tv.getPaint().getTextBounds(s, 0, s.length(), currentBounds);

//System.out.println(""+initSize);

//System.out.println(""+maxViewHeight);

//System.out.println(""+(currentBounds.height()));

float resultingSize = 1;

while(currentBounds.height() < maxViewHeight)

{

resultingSize ++;

tv.setTextSize(resultingSize);

tv.getPaint().getTextBounds(s, 0, s.length(), currentBounds);

//System.out.println(""+(currentBounds.height()+tv.getPaddingBottom()+tv.getPaddingTop()));

//System.out.println("Resulting: "+resultingSize);

}

if(currentBounds.height()>=maxViewHeight)

{

//just to be sure, reduce the value

tv.setTextSize(resultingSize-1);

}

}

}

我认为问题是在使用tv.getPaint()。getTextBounds(…)。它总是返回小的数字的文本边界…小相对于tv.getWidth()和tv.getHeight()值…即使文本大小远远大于TextView的宽度或高度。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。