android TextView空间的setTextSize()方法在真机上运行大小问题

今天调试一个项目,点击控件,放大或缩小TextView中的文本字体大小

它在虚拟机上能正常运行,但在真机上出现错误

给段代码:

viewText.setTextSize(viewText.getTextSize()-5);

System.out.println("viewTitle.getTextSize="+viewTitle.getTextSize());

每次点击,都会运行这段代码

但根据我打印的日志信息发现,结果是递增的

于是我想到真机上运行setTextSize()方法并不是我们想象的那样,里面设置多少,它字体就是多少

新建了一个android项目,加入代码(例子很简单,只附上关键性代码)

tx.setTextSize(50.0f);

for(int i=0;i<5;i++){ System.out.println("tx.getTextSize()="+tx.getTextSize()); tx.setTextSize(tx.getTextSize()-5); }

根据打印日志,输出结果还是递增的,我排除了原项目中代码错误问题,专心研究这setTextSize

我每次增大减少的数,也许是运气问题,当tx.setTextSize(tx.getTextSize()-25);时,输出结果没变动,不减少也不增加

我大胆猜想:只有减的值是当前值的一半以上时,字体才会变小

为验证猜想,重设代码:

tx.setTextSize(70.0f);

for(int i=0;i<5;i++){ System.out.println("tx.getTextSize()="+tx.getTextSize()); tx.setTextSize(tx.getTextSize()-25); }

结果值还是在增加,将25改成35,值不变,大于35字体开始变小

此刻,,我想我发现了什么……..

附demo下载:点击下载

于是去看了下setTextSize的源码,问题马上就解决了,源码就不讲解了,很简单的几句代码。

先上一小段代码: DisplayMetrics dm = getResources().getDisplayMetrics();

float value = value = dm.scaledDensity;

先得到手机的scaledDecsity

设置字体大小时,如设置18

用setTextSize(18/value)

那么我们得到的getTextSize()为18

ps:我只在我的真机上和2.3的模拟器上运行过,若有问题,欢迎提出!下载demo需要一个积分,上传时没注意,新手也不知道怎么修改,有需要的可以私我,我会尽量提供帮助。

最糟糕的行为是抱怨,最易见效 的努力是从自己做起。

android TextView空间的setTextSize()方法在真机上运行大小问题

相关文章:

你感兴趣的文章:

标签云: