首页 > 解决方案 > 如何获取 px 中的实际文本大小(不是 textSize 属性)?

问题描述

我的问题不在于字符数,也不在于 TextView/EditText 中的 textSize 属性。

我有一个固定的 EditText。maxLength 为 10。所有字符必须一次显示。但是,每个字符都有不同的宽度和高度。例如,l 和 L。如果您将鼠标拖到(块选择)l 上,然后是 L。您会注意到它们具有不同的宽度。

所以,LLLLLLLLLL 和 llllllllll 有不同的宽度。

例如,

LLLLLLLL

呸呸呸

(都是10个字母)

此外,不同的字体显示不同的宽度。

我的问题是如何获取 PX 中字符的实际宽度,以便字符串不会隐藏在 EditText 中。假设 EditText 的宽度是 200px。并且限制为 10 个字母。它会显示

LLLL(LLLLLL) // (LLLLL) 由于 EditText 的宽度而未显示。但是您可以在移动光标时看到。

呸呸呸

你怎么能得到字符的宽度?

标签: androidunicodetextviewcharandroid-edittext

解决方案


您可以使用TextPaint和测量字母,但对于您的情况,有一种更简单的方法。熟悉em 单位

EditText您可以为/ TextViewbysetEms(intNum)或声明此值android:ems="intNum"。也将宽度设置为wrap_content,您View将拥有intNum最宽字符(通常为Ms)的宽度。还有有用minEmsmaxEms属性

编辑:在这里你有更复杂的解释

PS。由于密度不同,请勿View使用单位声明 s 的大小,请使用. 这里的一些单位解释pxdp


推荐阅读