有没有办法弄清楚某个String
中某个Font
的像素宽度是多少?
在我的Activity
中,String
上放置了动态Button
。有时,String
太长,而且它分为两行,这使Button
看起来很难看。但是,由于我没有使用某种控制台Font
,因此单个字符宽度可能会有所不同。所以写
String test = "someString";
if(someString.length()>/*someValue*/){
// decrement Font size
}
因为" mmmmmmmm"比'&iii; iiiiiiii"更宽。
或者,Android中是否有一种方法可以将某个String
放在一行上,因此系统会缩放"自动Font
大小?
修改
因为wsanville的回答非常好,所以我的代码动态设置字体大小:
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;
}
答案 0 :(得分:4)
您应该可以使用Paint.setTypeface(),然后使用Paint.measureText()。您可以在Paint
类上找到其他方法,例如setTextSize()
。
有关缩放文字的后续问题已在this question中解决。