¿Cómo alinear el texto a la parte superior de TextView?

Cómo alinear el texto a la parte superior de un TextView?
API equivalente de Android para columpios setInsets ()?
Que es parte superior del texto debe comenzar en (0,0) de TextView

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:textSize="42sp" android:paddingTop="0px" android:gravity="top"> </TextView> </LinearLayout> 

He utilizado encima de fragmento, sin embargo, la salida no es como se esperaba
¿Algunas ideas?

6 Solutions collect form web for “¿Cómo alinear el texto a la parte superior de TextView?”

Así que el espacio en la parte superior del TextView 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) .

Observe la documentación del SDK para TextView si aún no está claro.

RESPUESTA EDITADA
Si la configuración del atributo android:includeFontPadding no logra lo que está intentando hacer, la otra solución es sobreescribir el onDraw(Canvas canvas) del TextView que está utilizando para que elimine el acolchado superior adicional que añade Android A cada TextView. Después de escribir mi respuesta original, me di cuenta de que por alguna razón TextView incluye relleno adicional además del relleno de la fuente. Eliminar el relleno de fuente así como este relleno adicional perfectamente alinea el texto a 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(); } } 

La fuente en sí tiene espacio en blanco extra en la parte superior e inferior creo.

Normalmente lo que hago es dar a la vista los márgenes negativos. El problema es que esto se ve mal cuando los dispositivos vienen con diferentes fuentes.

 android:layout_marginTop="-5dp" android:layout_marginBottom="-5dp" 

Usted tendrá que ajustar basado en el tamaño del texto, los tamaños más grandes del texto requieren un relleno más negativo.

En su .xml, escriba que:

 android:gravity="center|top" 

El primer "centro" alineará su línea horizontalmente en el centro y la siguiente "superior" alineará verticalmente hacia arriba.

Creo que tu fragmento es correcto. Supongo que te molestan algunos píxeles entre la parte superior de la letra "T" y el borde superior de la TextView? Este espacio se requiere para hacer algunas letras que no están presentes en el alfabeto inglés.

Compruebe que los enlaces para obtener idea:

Posible, no es necesario hacer su vista basada en TextView. Trate de ampliar Ver y escribir su texto en onDraw() .

Mira aquí: https://stackoverflow.com/a/32081250/1263771

Im no seguro si entiendo lo que usted está significando, pero el texto dentro del textview va a ser alinee a la tapa si usted utiliza gravity = top en el text-view.

Si pone un color de backgrund en usted textview usted puede ser que vea mejor qué está sucediendo …

Supongo que el problema es que la vista de texto se centra desde que utiliza fill_parent en la altura y el ancho en el LinearLayout padre. El textview parece ser el único niño así que trate de poner la gravedad = arriba en el LinearLayout …

Eso es lo único en lo que podría pensar …

  • Margen relacionado con la baseline de Android TextView
  • Agregar mediante programación borde a LinearLayout
  • Android: Ripple de fondo mediante programación
  • Android: ¿agrega el botón al título de la aplicación?
  • Use locale (ltr / rtl) para gravedad en TextView
  • Android: cómo agregar una forma de triángulo en la esquina derecha del botón superior
  • ¿Hay una manera de establecer el color ondulado para un botón de acción flotante a través de atributos XML?
  • Cómo hacer la imagen de fondo de la aplicación para Android repetir
  • Los bordes de desvanecimiento de los íconos Android no funcionan
  • Desplazamiento del menú (biblioteca) siempre a pantalla completa
  • Android Studio no procesa formato WebP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.