gpt4 book ai didi

Android TextView getTextSize() 是否包括下行、上行

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:00 24 4
gpt4 key购买 nike

我找不到任何地方提到如何测量 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/zUEzB.png

如您所见,它似乎没有使用下行字母和上行字母。

这是可绘制的图像,如果其他人想测试 http://i.imgur.com/Yhf8b.png

当使用将图像更改为文本大小的 80% 时

int size = (int)tvData.getTextSize() *80/100;

这是结果,将图像转置到 100% 图像之上。也许 setCompoundrawables 正在做它自己的缩放

enter image description here

我尝试测量字体和可绘制对象的中点,但它已关闭。这是一张突出显示它的图片enter image description here

最后我将可绘制对象向左移动 50 像素,然后测量输出,它是字体文本基线到基线高度的一半,因为 setTextSize 设置为 100px。

Android 必须使用其他布局来缩放和定位复合可绘制对象。也许我应该为此提出另一个问题。这是一个突出显示基线到基线的图像。 enter image description here

最佳答案

从一些光测试来看,它似乎是从上升到下降(文本大小 = 下降 - 上升)。使用 TextPaint 进行了一些调试以进行验证,为了更具体一点,我做了:

Paint.FontMetricsInt metrics;
for(int i = 1; i < 100; i++) {
mTextPaint.setTextSize(i);
metrics = mTextPaint.getFontMetricsInt();
if((metrics.descent - metrics.ascent) != i) Log.v("type", "Not equal");
}

它对每个值都是正确的。

关于Android TextView getTextSize() 是否包括下行、上行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com