8

String特定の特定のピクセル幅が何ピクセルかを把握する方法Fontはありますか?

私の には、 に配置されたActivityダイナミクスがあります。が長すぎて 2 行に分かれている場合があり、見栄えが悪くなります。ただし、一種のコンソールを使用しないため、単一の文字幅は異なる場合があります。したがって、次のようなものを書くのは助けにはなりませんStringButtonStringButtonFont

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

「mmmmmmmm」は「iiiiiiiii」よりも広いためです。

または、Android で 1 行に特定のサイズを合わせる方法があるので、システムはサイズを自動的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 ( )を使用できるはずです。クラスの他のメソッドも役立ちます。PaintsetTextSize()

テキストのスケーリングに関するフォローアップの質問は、この質問で対処されました。

于 2012-10-30T14:08:41.253 に答える