Java 如何比较屏幕的宽度大小和字符串的大小?
因此,出于我的特殊原因,我需要确保Java 如何比较屏幕的宽度大小和字符串的大小?,java,android,string,Java,Android,String,因此,出于我的特殊原因,我需要确保字符串(放置在文本视图中)的大小(以像素为单位)不超过设备的宽度大小(以像素为单位)。要获得屏幕的宽度,我使用: final float scale = context.getResources().getDisplayMetrics().density; WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display
字符串(放置在文本视图中)的大小(以像素为单位)不超过设备的宽度大小(以像素为单位)。要获得屏幕的宽度,我使用:
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
方法是说字符串
小于屏幕的长度,即使它长得多。我忽略了什么吗?有没有更好的方法?任何帮助、建议或建议都将不胜感激!谢谢 用我提供的代码,我的问题的答案并不容易找到。因为我提供的代码是正确的。问题是我创建了Paint
对象,如下所示:
Paint paint = new Paint();
然后我引用了measureText(string)
方法。问题是它没有考虑我给这个TextView
子类的文本大小。因此,为了解决这个问题,我所要做的就是将上述代码更改为:
Paint paint = this.getPaint();
我通常使用:
paint.getTextBounds
对于这种情况,我发现它非常准确
我还发现,在自定义版本的TextView
中覆盖onSizeChanged
(其他内容保持不变)意味着我可以在需要时直接确定视图的大小。要计算字符的宽度,需要知道字符的大小。这会随着非单声道字体的不同而变化。那么,公式是(字符大小)*(字符串大小)吗?其中(字符大小)可能等于最大字符大小(M),而(字符串大小)可能等于paint.measureText
method?我的另一个问题是paint.measureText()
如何在不参考字符大小的情况下计算大小?不,您需要枚举每个字符并计算其大小。然后把它们加在一起。