2015-01-21 14 views
6

Ho due szenarios:Android text-size a livello di codice troppo grande

Prime:

textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize)); 

secondo in xml:

android:textSize="@dimen/defaultTextSize" 

nei valori/dimen.xml ho dichiarato defaultTextSize con 20sp

Nel mio primo caso il testo è molto più grande (e diverso in alcune schermate) t han nel mio secondo caso. Perché? Ho fatto un errore?

risposta

11

setTextSize() prende Unità pixel

Usa questa

public float pixelsToSp(float px) 
{ 
    float scaledDensity = _context.getResources().getDisplayMetrics().scaledDensity; 
    return px/scaledDensity; 
} 

textView.setTextSize(pixelsToSp(getResources().getDimension(R.dimen.defaultTextSize))); 

o

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize)) 
+2

Assolutamente nessun indizio perché, ma la seconda raccomandazione non funziona sul mio GalaxyS4. Oi Vey Android ... ma la soluzione 1 ha funzionato, quindi grazie. –

+1

@Kufuma non funziona perché è sbagliato: dovrebbe essere 'COMPLEX_UNIT_PX' invece di' COMPLEX_UNIT_SP'. Vedi anche la risposta di Blackbelt in questa pagina. –

6

L'attuazione di setTextSize(float size)

public void setTextSize(float size) { 
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size); 
} 

Quello che sta accadendo, nel tuo caso, è che si sta ridimensionando il valore che hai fornito a setTextSize, poiché getDimension restituisce la dimensione moltiplicata per la metrica. Provate con

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize)); 
0

TextView utilizza il metodo Resources.getDimensionPixelSize, non Resources.getDimension per textSize.

1

Hai provato a usare

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.defaultTextSize)); 
Problemi correlati