0

我创建了一个代码,它会返回我可以放入 android 编辑文本的行数,但不能正常工作。该代码位于编辑文本的 TextWatcher 中。

我的代码是:

Math.round((dpFromPx(edittext.getHeight())-67)/spFromPx(edittext.getTextSize()))

-67是该编辑文本在顶部和底部的边距之和。

用于将 px 转换为 dp 和 px 转换为 sp 的方法如下

private float dpFromPx(float px){
    return px / this.getResources().getDisplayMetrics().density;
}
public float spFromPx(Float px) {
    float scaledDensity = this.getResources().getDisplayMetrics().scaledDensity;
    return px/scaledDensity;
}

我认为该代码应该告诉我可以容纳在编辑文本中的最大行数,但总是返回一个比可以容纳在编辑文本中的行数更多的行数。

那么,怎么了?

4

1 回答 1

0

我发现更正确的代码如下:

Math.round((dpFromPx(edittext.getHeight())-67)/spFromPx(edittext.getTextSize()))-3

和第一个一样,但是这个有一个-3,调整了一些我无法理解的罕见的东西。

于 2013-12-29T01:00:39.730 回答