8

有什么方法可以计算出某个特定String的像素宽Font是多少?

在我的Activity中,有动态String的 s 放在了一个Button. 有时,String它太长,它被分成两条线,是什么让Button看起来很难看。但是,由于我不使用某种控制台Font,因此单个字符宽度可能会有所不同。所以写类似的东西没有帮助

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

因为“mmmmmmmm”比“iiiiiiiii”宽。

或者,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;
}
4

1 回答 1

4

您应该能够使用Paint.setTypeface( ) 然后Paint.measureText()。你会发现Paint课堂上的其他方法setTextSize()也可以提供帮助。

您关于缩放文本的后续问题已在此问题中得到解决。

于 2012-10-30T14:08:41.253 回答