找出某个字体中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; } 

  • 资源数组
  • 在Androidstring中使用可翻译的目的是什么?
  • 如何从命令行发送String intent额外值?
  • 如何在Android中存储长文本?
  • 如何在Android中将string转换为标题大小写?
  • 如何从Android中的每个dynamic创build的EditText获取数据?
  • 如何在Android字符串资源中添加utf-16字符?
  • 是否有可能在strings.xml中引用另一个string?
  • 你应该可以使用Paint.setTypeface( ),然后使用Paint.measureText() 。 你可以在Paint类上find其他的方法,像setTextSize()可以帮助你。

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