C'è un modo per capire quanti pixel di larghezza è un certo String
in un determinato Font
?Figura di larghezza di una stringa in un determinato carattere
Nel mio Activity
, ci sono dinamici String
s messi su un Button
. A volte, lo String
è troppo lungo ed è diviso su due righe, ciò che rende lo Button
brutto. Tuttavia, poiché non utilizzo una sorta di console Font
, le singole larghezze di caratteri possono variare. Quindi non è un aiuto scrivendo qualcosa come
String test = "someString";
if(someString.length()>/*someValue*/){
// decrement Font size
}
perché un "mmmmmmmm" è più ampio di quello "iiiiiiii".
In alternativa, c'è un modo in Android per adattare un determinato String
su una singola riga, quindi il sistema "ridimensiona" automaticamente la dimensione Font
?
EDIT:
dal momento che la risposta da wsanville era veramente bello, ecco la mia impostazione della dimensione del carattere dinamico di codice:
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;
}
grazie per il suggerimento molto utile, vedere la mia soluzione nella risposta originale –