如何比较屏幕的宽度大小和字符串的大小?

时间:2013-04-15 00:35:37

标签: java android string

因此,出于我的特殊原因,我需要确保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小于屏幕的长度,即使它长得多。我忽略了什么吗?有没有更好的方法来做到这一点?任何帮助,建议或建议将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

我的问题的答案并不容易理解我提供的代码。我提供的代码是正确的。问题是我创建了Paint对象,如下所示:

Paint paint = new Paint();

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

Paint paint = this.getPaint();

答案 1 :(得分:0)

我经常使用:

 paint.getTextBounds

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

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