我找不到任何提到如何测量 Textview 中的 getTextSize() 的地方。从视觉测试来看,它似乎不包括下降器,但似乎包括上升器。它似乎也不完全从基线开始。
http://en.wikipedia.org/wiki/Descender
这是最接近它的提及,但来自 Google 的 Romain Guy 只是忽略了问题的那一部分。
http://www.mail-archive.com/android-developers@googlegroups.com/msg08514.html
因为我需要这个,因为我正在使用 Compound Drawables,并且我需要能够将 drawable 与不同设备上的文本对齐。
这是我用来在一个接触边缘的圆上测试一个复合可绘制对象的代码
tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX, 100);
tvData.setText("agB5ãÂ");
int size = (int)tvData.getTextSize();
Drawable img = getResources().getDrawable(R.drawable.circle_white_full_72 ).mutate();
img.setBounds( 0 , 0 , size , size);
tvData.setCompoundDrawables( null, null, img, null );
这是结果
如您所见,它似乎没有使用下降器和上升器。
这是可绘制的图像,如果其他人想测试 http://i.imgur.com/Yhf8b.png
使用将图像更改为文本大小的 80% 时
int size = (int)tvData.getTextSize() *80/100;
这是结果,图像转置在 100% 图像之上。也许 setCompoundrawables 正在做它自己的缩放
我尝试测量字体和可绘制的中点,但它已关闭。这是突出显示它的图像
最后,我将可绘制的 50 像素向左移动,然后测量输出,它是字体文本基线到基线高度的一半,因为 setTextSize 设置为 100 像素。
Android 必须使用其他布局来缩放和定位复合可绘制对象。也许我应该为此创建另一个问题。这是一个突出基线到基线的图像。