0

因此,出于我的特殊原因,我需要确保String(放置在 TextView 中)大小(以像素为单位)不超过设备的宽度大小(以像素为单位)。要获得我使用的屏幕宽度:

    final float scale = context.getResources().getDisplayMetrics().density;
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    try{
        Point size = new Point();
        display.getSize(size);
        screenWidth = size.x;
    }catch(NoSuchMethodError e){
        screenWidth = display.getWidth();
    }
    screenWidth = screenWidth - ((int) (10 * scale + 0.5f)); //takes into account a 10dp margin

并获得我使用的字符串的长度:

paint.measureText(string);

其中 string 是一个String对象,而 paint 是一个Paint对象。我面临的问题是:方法measureText是说它String小于屏幕的长度,即使它长得多。我忽略了什么吗?有没有更好的方法来做到这一点?任何帮助、建议或意见将不胜感激!谢谢!

4

2 回答 2

0

我一般用过:

 paint.getTextBounds

对于这种情况,发现它非常准确。

我还发现,onSizeChanged在自定义版本中覆盖TextView(保持其他所有内容相同)意味着我可以在需要时直接修复视图的大小。

于 2013-04-15T18:57:04.720 回答
0

用我提供的代码来解决我的问题并不容易。对于我提供的代码是正确的。问题是我Paint按如下方式创建了对象:

Paint paint = new Paint();

然后我引用了这个measureText(string)方法。这样做的问题是它没有考虑我给这个子类的文本大小TextView。所以,为了解决这个问题,我所要做的就是将上面的代码更改为:

Paint paint = this.getPaint();
于 2013-04-15T18:52:01.967 回答