找出某个字体中string的宽度

有没有什么办法可以找出一个特定的String中的某个String有多less个像素?

在我的Activity ,有一个dynamic的String放在一个Button 。 有时, String太长,它分成两行,这使Button看起来很丑。 但是,因为我不使用某种控制台Font ,单个字符宽度可能会有所不同。 所以这不是写一些类似的帮助

 String test = "someString"; if(someString.length()>/*someValue*/){ // decrement Font size } 

因为“mmmmmmmm”比“iiiiiiii”宽。

或者,在Android中有没有一种方法可以在一行上安装某个String ,因此系统会自动“缩放” Font大小?

编辑:

因为从wsanville的答案是非常好的,这是我的代码dynamic设置字体大小:

 private void setupButton(){ Button button = new Button(); button.setText(getButtonText()); // getButtonText() is a custom method which returns me a certain String Paint paint = button.getPaint(); float t = 0; if(paint.measureText(button.getText().toString())>323.0){ //323.0 is the max width fitting in the button t = getAppropriateTextSize(button); button.setTextSize(t); } } private float getAppropriateTextSize(Button button){ float textSize = 0; Paint paint = button.getPaint(); textSize = paint.getTextSize(); while(paint.measureText(button.getText().toString())>323.0){ textSize -= 0.25; button.setTextSize(textSize); } return textSize; } 

Related of "找出某个字体中string的宽度"

你应该可以使用Paint.setTypeface( ),然后使用Paint.measureText() 。 你可以在Paint类上find其他的方法,像setTextSize()可以帮助你。

在这个问题中解决了关于缩放文本的后续问题 。