TextView no se adhiere a la parte superior derecha

Estoy teniendo relleno innecesario en mi objeto textview. Vamos a concentrarnos solamente en la vista superior derecha en mi foto de abajo, la que tiene 1.48 y 6.91 . Mi requisito es que el texto dibuje en la esquina superior derecha de su propio límite por lo que es "superior justificado" a la DIJACOR y "justificado a la derecha" a +0.01 . Traté de gravity="top|right" , includeFontPadding=false y paddings=0 pero no sirvió. Para el segundo caso, el resultado render muestra algunos espacios adicionales después del 6.91 , por lo que no está alineado con el -0.01 continuación. ¿Cualquier persona puede compartir conmigo en cómo arreglar esto? ¡Gracias!

Objeto de vista de cuadrícula

Aquí es cómo defino el objeto textView:

 <TextView android:id="@+id/priceLast" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginTop="0dp" android:gravity="top|right" android:includeFontPadding="false" android:paddingBottom="0dp" android:paddingLeft="0dp" android:paddingRight="0dp" android:paddingTop="0dp" android:singleLine="true" android:text="@string/price" android:textColor="@color/dark_green" android:textIsSelectable="false" android:textSize="24sp" android:textStyle="bold" /> 

Grupo de vista raíz:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg_card_selector" android:orientation="vertical" android:paddingBottom="8dp" android:paddingTop="4dp" > 

Para el caso # 2, la razón es que en la mayoría de las fuentes, todos los dígitos tienen el mismo ancho de caracteres en píxeles. Así que el dígito "1" y "8" toman la misma cantidad de píxeles de ancho. La razón es que usted podría escribir números encima de uno a y los dígitos alinearán siempre. Esto significa que una cadena como "4.1" tendrá más píxeles vacíos en él es correcto que "4.8". La solución es usar una fuente donde cada dígito tiene un ancho compacto, o tener su propia vista que rinde los dígitos a un mapa de bits, encuentre el píxel no vacío más a la derecha y desplace el mapa de bits para alinearlo a la derecha.

El relleno que es visible para usted es el relleno de fuente por defecto, y y usted está recibiendo un poco de desajuste debido a diferentes tamaños de fuente.

Puede intentar varias cosas para solucionar este problema:

1) Trate de fijar la altura de sus TextViews (es decir, uno con DIJACOR y 1.48), por ejemplo: android: layout_height = "100dp" , esto resolverá su problema de alineación superior. Usted puede ajustar la altura según su necesidad.

2) Para espacio adicional después de "1". Si observa cuidadosamente que el espacio también está allí en 1.48, después de "1". Esto significa que la fuente tiene espacio adicional después de "1". Si nuestra hipótesis es correcta, entonces usar alguna fuente diferente solucionará este problema. Pruebe con: android: fontFamily = "sans-serif" O android: fontFamily = "sans-serif-light" O android: fontFamily = "sans-serif-condensed "

Creo que el espacio extra de la 6.91 está dentro de la fuente, y no puedes evitarlo. Para hacerlo ir todo el camino a la parte superior derecha de los padres, asegúrese de que el padre no tiene relleno.

Creo que es debido a 1. 1 es más delgada de 9 y todos los números contiene en el área por defecto. Pero usted puede agregar android:paddingRight="-1dp" . No es saludable, pero debería funcionar.

He intentado imitar su diseño con fuentes estándar y creo que este relleno aparece debido a la diferencia de tamaño entre la cadena DIJACOR y 1.78. Tal vez usted puede tratar de agregar margenTop a DIJACOR cadena? Si los miembros de la columna de DIJACOR se relacionan con DIJACOR, entonces agregar marginTop no cambiará significativamente su diseño.

Desde la vista gráfica de diseño (igual a ver en el emulador)

Yo diría que, quitar el relleno de DIJACOR TextView y 1.48 TextView y agregar el margen superior a ambos. O bien marginTop a una presentación lineal donde puede publicar paddingTop o marginTop según sea necesario.

Su problema son los diferentes tamaños de fuente. Hay caracteres que son más altos que un 9, como el Î. Estos caracteres también necesitan espacio por encima de los números y letras habituales. El espacio requerido no es un espaciado de fuente, por lo que la directiva XML no ayudará. Android utiliza la altura de la vista para alinear las vistas, por eso los bordes superiores concebidos no coinciden.

Me enfrenté al mismo problema y no hay manera fácil de evitarlo. Lo mejor que puede hacer es usar marginTop para el texto más grande con un margen negativo, pero que puede ser buggy cuando se trata de animaciones. Alternativamente, también puede agregar un paddingTop a la vista de otro texto.

  • Cómo agregar borde a un texto en textview android
  • Android TextView getTextSize () incluye descendientes, ascenders
  • El niño especificado ya tiene un padre. Debe llamar a removeView () en el primer padre del niño (Android)
  • ¿Cuál es la diferencia entre el estilo de TextView y los atributos android: textAppearance?
  • Cómo ajustar texto a la siguiente línea en un Android TextView?
  • TextView en TableRow está parcialmente oculto
  • Android / Java: ¿Determinar si el color del texto se mezclará con el fondo?
  • Android: dos problemas con Tablerow + TextView en Tablelayout
  • Creación de la caja de conmutación onClickListener para TextView
  • Android: cambia dinámicamente TextView Color de fondo
  • Autocompletar de Android varias líneas de texto en un resultado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.