因此,出于我的特殊原因,我需要确保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
小于屏幕的长度,即使它长得多。我忽略了什么吗?有没有更好的方法来做到这一点?任何帮助,建议或建议将不胜感激!谢谢!
答案 0 :(得分:0)
我的问题的答案并不容易理解我提供的代码。我提供的代码是正确的。问题是我创建了Paint
对象,如下所示:
Paint paint = new Paint();
然后我引用了measureText(string)
方法。这个问题是它没有考虑我给TextView
这个子类的文本大小。因此,为了解决这个问题,我所要做的就是将上面的代码更改为:
Paint paint = this.getPaint();
答案 1 :(得分:0)
我经常使用:
paint.getTextBounds
对于这种情况,发现它非常准确。
我还发现在onSizeChanged
的自定义版本中覆盖TextView
(让其他所有内容保持不变)意味着我可以在需要时直接修复视图的大小