Cuando tengo una TextView
con a \n
en el texto, a la derecha tengo dos singleLine
TextView
s, una debajo de la otra sin espacios entre ellas. He establecido lo siguiente para los tresTextView
s.
android:lineSpacingMultiplier="1"
android:lineSpacingExtra="0pt"
android:paddingTop="0pt"
android:paddingBottom="0pt"
La primera línea de la izquierda TextView
alinea perfectamente con la parte superior derecha TextView
.
La segunda linea de la izquierda TextView
es un poco más alta que la segunda línea de la parte inferior derecha TextView
.
Parece que hay algún tipo de relleno oculto en la parte superior e inferior del TextView
s. ¿Cómo puedo eliminar eso?
Respuestas:
o en
XML
esto sería:Establezca si
TextView
incluye acolchado superior e inferior adicionales para dejar espacio para los acentos que superan el ascenso y descenso normales. El defecto es cierto.fuente
1dp
relleno superior / inferior, ¿estoy equivocado? (Lo usoDeveloper options -> Show layout bounds
)includeFontPadding="false"
elimina parte del espacio, pero no todo. muy extraño.includeFontPadding
es ideal para eliminar cualquier relleno adicional de la fuente en sí, pero puede causar problemas en idiomas que tienen ascendentes y descendientes. Me aseguraría de que si hace esto, pruebe idiomas como el español y el tailandés si los admite.Siento tu dolor. He intentado todas las respuestas anteriores, incluida la
setIncludeFontPadding
de falso, que no hizo nada por mí.¿Mi solución?
layout_marginBottom="-3dp"
sobre elTextView
te da una solución para el fondo, BAM!Aunque, -3dp en
layout_marginTop
falla ... ugh.fuente
Busqué mucho la respuesta correcta, pero no pude encontrar una respuesta que pudiera eliminar exactamente todo el relleno del
TextView
, pero finalmente, después de pasar por el documento oficial, obtuve una solución para los textos de línea únicaAgregar estas dos líneas a
TextView
xml hará el trabajo.El primer atributo elimina el relleno reservado para los acentos y el segundo atributo elimina el espacio reservado para mantener el espacio adecuado entre dos líneas de texto.
fuente
fontPath
atributo?Si usa
AppCompatTextView
(o deAPI 28
adelante en adelante) puede usar la combinación de esos 2 atributos para eliminar el espacio en la primera línea:XML
Kotlin
fuente
Esto también me molestó, y la respuesta que encontré fue que en realidad hay espacio adicional en la fuente en sí, no en TextView. Es bastante irritante, ya que proviene de un fondo de publicación de documentos, la cantidad limitada de control que tiene con Android sobre los elementos tipográficos. Recomiendo usar un tipo de letra personalizado (como Bitstream Vera Sans, que tiene licencia para redistribución) que puede no tener este problema. Sin embargo, no estoy seguro específicamente de si lo hace o no.
fuente
Puede intentar usar este atributo (ConstraintLayout):
layout_constraintBaseline_toBaselineOf
Me gusta esto:
fuente
Elimino el espacio en mi vista personalizada: NoPaddingTextView.
https://github.com/SenhLinsh/NoPaddingTextView
fuente
Con un ImageView adicional, podemos configurar TextView para que esté alineado con la línea base con ImageView y establecer TrueView
android:baselineAlignBottom
en ImageView, lo que hará que la línea base de ImageView sea inferior. Otras vistas pueden alinearse utilizando la parte inferior de ImageView, que es la misma que la línea de base de TextView.Sin embargo, esto solo repara el fondo del relleno, no la parte superior.
fuente
Creo que este problema se puede resolver de esta manera:
Esos son los resultados:
Captura de pantalla-1
Captura de pantalla-3
Aunque la línea de caracteres especiales en rightLowerText se ve un poco más alta que la segunda línea de leftText, sus líneas de base están alineadas.
fuente
Como mi requisito es anular la obtención de textView existente
findViewById(getResources().getIdentifier("xxx", "id", "android"));
, no puedo simplemente intentaronDraw()
otra respuesta.Pero acabo de descubrir los pasos correctos para solucionar mi problema, aquí está el resultado final de Layout Inspector:
Como lo que quería es simplemente eliminar los espacios superiores, no tengo que elegir otra fuente para eliminar los espacios inferiores.
Aquí está el código crítico para arreglarlo:
La primera clave es configurar la fuente personalizada "fonts / myCustomFont.otf" que tiene el espacio en la parte inferior pero no en la parte superior, puede resolverlo fácilmente abriendo el archivo otf y haciendo clic en cualquier fuente en Android Studio:
Como puede ver, el cursor en la parte inferior tiene un espacio adicional pero no en la parte superior, por lo que solucionó mi problema.
La segunda clave es que no puede simplemente omitir ninguno de los códigos , de lo contrario podría no funcionar. Esa es la razón por la que puede encontrar que algunas personas comentan que una respuesta está funcionando y otras comentan que no está funcionando.
Vamos a ilustrar lo que sucederá si elimino uno de ellos.
Sin
setTypeface(mfont);
:Sin
setPadding(0, 0, 0, 0);
:Sin
setIncludeFontPadding(false);
:Sin 3 de ellos (es decir, el original):
fuente
Lo único que funcionó es
fuente
XML actualizado
fuente
Método simple trabajado:
Si no funcionó, intente agregar esto arriba de ese código:
Si necesita varias líneas, tal vez necesite calcular exactamente la altura del relleno superior e inferior a través de TextView de una sola línea temporal (antes y después de eliminar el relleno), luego aplique el resultado de disminución de altura con relleno negativo o algún diseño de fantasma con traslación Y. Jajaja
fuente
Puede intentar alinear la parte inferior de la vista de texto izquierda con la parte inferior de la segunda vista de texto derecha.
fuente
Que yo sepa, esto es inherente a la mayoría de los widgets y la cantidad de "relleno" difiere entre los fabricantes de teléfonos. Este relleno es realmente un espacio en blanco entre el borde de la imagen y la imagen en el archivo de imagen de 9 parches.
Por ejemplo, en mi Droid X, los widgets giratorios obtienen un espacio en blanco adicional que los botones, lo que hace que se vea incómodo cuando tienes una rueda giratoria en línea con un botón, ¡pero en el teléfono de mi esposa la misma aplicación no tiene el mismo problema y se ve genial!
La única sugerencia que tendría es crear sus propios 9 archivos de parche y usarlos en su aplicación.
Ahhh los dolores que son Android.
Editado: Aclarar el relleno contra el espacio en blanco.
fuente
Este truco funcionó para mí (para min-sdk> = 18 ).
Solía
android:includeFontPadding="false"
y un margen negativo comoandroid:layout_marginTop="-11dp"
y puseTextView
dentro de unaFrameLayout
( o cualquier ViewGroup ... )y finalmente códigos de muestra:
fuente
Mira esto:
Alinear ImageView con EditText horizontalmente
Parece que la imagen de fondo de EditText tiene algunos píxeles transparentes que también agregan relleno.
Una solución es cambiar el fondo predeterminado de EditText a otra cosa (o nada, pero probablemente no sea aceptable un fondo para EditText). Eso se puede hacer configurando android: atributo XML de fondo.
fuente
Simplemente use
fuente
Use esto en su ImageView xml
android: ajustarViewBounds = "verdadero"
fuente