Così lo spazio nella parte superiore della TextView è imbottitura utilizzato per i caratteri al di fuori della lingua inglese, come accenti. Per rimuovere questo spazio, puoi impostare l'attributo android:includeFontPadding
su false
nel tuo XML oppure puoi farlo a livello di codice con la funzione setIncludeFontPadding(false)
.
Guardare allo SDK documentation for TextView se questo non è ancora chiaro.
RISPOSTA A CURA
Se impostando l'attributo android:includeFontPadding
non compie quello che stai cercando di fare, l'altra soluzione è quella di sostituire il metodo della TextView che si sta utilizzando in modo onDraw(Canvas canvas)
che elimina la parte superiore aggiuntivo riempimento che Android aggiunge a ogni TextView. Dopo aver scritto la mia risposta originale, ho notato che per qualche ragione TextView include un riempimento extra oltre al riempimento del font. Rimozione del carattere padding e come questo padding aggiuntivo allinea perfettamente il testo nella parte superiore del TextView. Guarda il frammento di codice qui sotto.
public class TopAlignedTextView extends TextView {
// Default constructor when inflating from XML file
public TopAlignedTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
// Default constructor override
public TopAlignedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs);
setIncludeFontPadding(false); //remove the font padding
setGravity(getGravity() | Gravity.TOP); //make sure that the gravity is set to the top
}
/*This is where the magic happens*/
@Override
protected void onDraw(Canvas canvas){
TextPaint textPaint = getPaint();
textPaint.setColor(getCurrentTextColor());
textPaint.drawableState = getDrawableState();
canvas.save();
//converts 5dip into pixels
int additionalPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getContext().getResources().getDisplayMetrics());
//subtracts the additional padding from the top of the canvas that textview draws to in order to align it with the top.
canvas.translate(0, -additionalPadding);
if(getLayout() != null)
getLayout().draw(canvas);
canvas.restore();
}
}
http://code.google.com/p/android/issues/detail?id=8435 :-( – Blundell
Perché non funziona per me ?! –
Sì, questo non funziona per me o – JPM