lo que el espacio en la parte superior de la Vista de Texto es el relleno utilizado para caracteres fuera del idioma Inglés como acentos. Para eliminar este espacio, puede establecer el atributo android:includeFontPadding
en false
en su XML o puede hacerlo programáticamente con la función setIncludeFontPadding(false)
.
Mire el SDK documentation for TextView si aún no está claro.
RESPUESTA EDITADO
Si estableciendo el atributo android:includeFontPadding
no cumple lo que estás tratando de hacer, la otra solución es reemplazar el método de la TextView que está utilizando de manera onDraw(Canvas canvas)
que elimina la parte superior adicional relleno que Android agrega a cada TextView. Después de escribir mi respuesta original, noté que, por alguna razón, TextView incluye relleno extra además del relleno de la fuente. También se elimina el relleno de fuente y, ya que este relleno adicional alinea perfectamente el texto con la parte superior de TextView. Mira el fragmento de código a continuación.
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
¿Por qué no es trabajo para mí ?! –
Sí, esto no funciona para mí tampoco – JPM