2015-02-10 41 views
0

我得到了一个水平方向的带有ImageView和TextView的LinearLayout。 TextView具有1位或2位数字的文本。setTextSize相应ImageView的图像大小

我需要的是将TextView的文本大小设置为在ImageView图像的高度中完全相同。

我知道我可以得到ImageView的图像高度,但我怎样才能使textSize相应地高?

+0

难,我会说尝试和错误 – webo80 2015-02-10 14:35:01

回答

0

好了,我发现自己下面:

首先我们需要找到一个ImageView的图像的真正高度 - 它不像ImageView那么高,所以这里解释得很好:How to get the width and height of an android.widget.ImageView?

接下来我们设置文本的高度:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 
imageView.getMeasuredHeight()*(imageView.getMeasuredHeight()/ 
imageView.getMeasuredWidth())); 

这意味着我们设定TEXTSIZE在原始像素,那么我们就高度,并与高度的图像的比率乘以与宽度这样的TextView的文字大小将是完全高作为图像

0

给予一定的高度,宽度都(图像视图和TextView的)...或者尝试scaleType = “fitxy” ......

0

你可以试试:

float height = imageView.getHeight(); 
TextView tv = new TextView(context); 
tv.setTextSize(height) 

我不知道这将完全符合你的要求,但这是我看到的最明显的起点。

1

View.getHeight()

返回你的视线的高度。返回

返回
       你的视线的高度,在像素

TextView.setTextSize(float)

设置默认文本大小为给定值,解释为 “缩放 像素” 单位。此大小根据当前密度和 用户字体大小首选项进行调整。

参数
      大小        的缩放的像素大小。

这基本上意味着你需要的高度(像素),文本高度(SP)转换:

float density = getResources().getDisplayMetrics().scaledDensity; 
float textHeight = imageHeight/density;