Когда в тексте у меня есть буква TextView
a \n
, справа у меня есть две singleLine
TextView
буквы s, одна под другой, без промежутков между ними. Я установил следующее для всех трех TextView
с.
android:lineSpacingMultiplier="1"
android:lineSpacingExtra="0pt"
android:paddingTop="0pt"
android:paddingBottom="0pt"
Первая строка слева TextView
идеально совпадает с верхней правой TextView
.
Вторая строка слева TextView
немного выше, чем вторая строка справа внизу TextView
.
Кажется, что есть какая-то скрытая прокладка сверху и снизу TextView
s. Как я могу удалить это?
Ответы:
или в
XML
этом будет:Установите,
TextView
включает ли дополнительная верхняя и нижняя прокладка, чтобы освободить место для акцентов, которые идут выше нормального подъема и спуска. По умолчанию это правда.источник
1dp
верхний / нижний отступ, я не прав? (Я используюDeveloper options -> Show layout bounds
)includeFontPadding="false"
действительно удаляет часть пространства, но не все. очень странно.includeFontPadding
отлично подходит для удаления любых дополнительных отступов из самого шрифта, но может вызывать проблемы в языках с восходящими и нисходящими линиями. Я хотел бы убедиться, что если вы сделаете это, вы будете тестировать языки, такие как испанский и тайский, если будете их поддерживать.Я чувствую твою боль. Я пробовал каждый ответ выше, включая
setIncludeFontPadding
ложный, который ничего не сделал для меня.Мое решение?
layout_marginBottom="-3dp"
наTextView
дает вам решение для дна, БАМ!Хотя, -3dp
layout_marginTop
не удается .... тьфу.источник
Я много искал правильный ответ, но нигде не мог найти ответ, который мог бы точно удалить все отступы из
TextView
, но, наконец, после прохождения официального документа, я нашел способ работать с однострочными текстами.Добавление этих двух строк в
TextView
xml сделает работу.Первый атрибут удаляет отступы, зарезервированные для акцентов, а второй атрибут удаляет интервал, зарезервированный для поддержания надлежащего пространства между двумя строками текста.
источник
fontPath
атрибут?Если вы используете
AppCompatTextView
(илиAPI 28
далее), вы можете использовать комбинацию этих двух атрибутов, чтобы удалить интервал в первой строке:XML
Котлин
источник
Это меня тоже раздражало, и ответ, который я нашел, заключался в том, что на самом деле в самом шрифте есть дополнительное пространство, а не TextView. Это довольно раздражает, исходя из фона публикации документов, ограниченного контроля над Android над типографскими элементами. Я бы порекомендовал использовать пользовательский шрифт (например, Bitstream Vera Sans, который лицензирован для распространения), который может не иметь этой проблемы. Я не уверен конкретно, действительно ли это делает, или нет.
источник
Вы можете попробовать использовать этот атрибут (ConstraintLayout):
layout_constraintBaseline_toBaselineOf
Как это:
источник
Я удаляю интервал в моем собственном представлении - NoPaddingTextView.
https://github.com/SenhLinsh/NoPaddingTextView
источник
С помощью дополнительного ImageView мы можем установить выравнивание TextView по базовой линии с ImageView и установить
android:baselineAlignBottom
для ImageView значение true, что сделает базовую линию ImageView нижней. Другие виды могут выравниваться, используя нижнюю часть ImageView, которая сама по себе совпадает с базовой линией TextView.Это, однако, только исправляет нижнюю часть отступа, а не верхнюю.
источник
Я думаю, что эту проблему можно решить следующим образом:
Вот результаты:
ScreenShot-1
ScreenShot-3
Хотя строка специальных символов в rightLowerText выглядит немного выше, чем вторая строка leftText, их базовые линии выровнены.
источник
Так как мое требование переопределить существующий textView получить
findViewById(getResources().getIdentifier("xxx", "id", "android"));
, поэтому я не могу просто попробоватьonDraw()
другой ответ.Но я только придумываю правильные шаги, чтобы исправить мою проблему, вот окончательный результат от Layout Inspector:
Поскольку я хотел просто удалить верхние пробелы, поэтому мне не нужно выбирать другой шрифт для удаления нижних пробелов.
Вот критический код, чтобы исправить это:
Первый ключ - это настраиваемый шрифт "fonts / myCustomFont.otf", который имеет место снизу, но не сверху, вы можете легко это выяснить, открыв файл otf и щелкнув любой шрифт в Android Studio:
Как видите, курсор внизу имеет дополнительный интервал, но не сверху, поэтому он решил мою проблему.
Второй ключ - вы не можете просто пропустить любой код , иначе он может не работать. Вот почему вы можете найти, что некоторые люди комментируют, что ответ работает, а некоторые другие люди говорят, что он не работает.
Давайте проиллюстрируем, что произойдет, если я уберу один из них.
Без
setTypeface(mfont);
:Без
setPadding(0, 0, 0, 0);
:Без
setIncludeFontPadding(false);
:Без 3 из них (то есть оригинал):
источник
Единственное, что сработало
источник
Обновленный XML
источник
Простой метод работал:
Если это не сработало, попробуйте добавить этот код выше:
Если вам нужна многострочная связь, возможно, вам нужно будет точно рассчитать высоту верхнего и нижнего отступов с помощью временной однострочной строки TextView (до и после удаления отступов), а затем применить результат уменьшения высоты с отрицательным заполнением или какой-либо Ghost Layout с переводом Y. Ржунимагу
источник
Возможно, вы захотите попробовать выровнять нижнюю часть левого текстового представления с нижней частью 2-го правого текстового представления.
источник
Насколько мне известно, это присуще большинству виджетов, а количество «отступов» различается у разных производителей телефонов. Это заполнение - действительно пробел между границей изображения и изображением в файле изображения с 9 патчами.
Например, на моем Droid X виджеты со спиннером получают больше пустого пространства, чем кнопки, что делает его неуклюжим, когда у тебя есть встроенный спиннер с кнопкой, но на телефоне моей жены такое же приложение не имеет такой же проблемы и выглядит великолепно!
Единственное, что я могу предложить, - это создать свои 9 файлов патчей и использовать их в своем приложении.
Аааа боли, которые Android.
Отредактировано: уточнение отступов и пробелов.
источник
Этот трюк сработал для меня (для min-sdk> = 18 ).
Я использовал
android:includeFontPadding="false"
и отрицательное поле, какandroid:layout_marginTop="-11dp"
и положилTextView
внутриFrameLayout
( или любой ViewGroup ... )и, наконец, примеры кодов:
источник
Посмотри это:
Выровняйте ImageView с EditText по горизонтали
Кажется, что фоновое изображение EditText имеет несколько прозрачных пикселей, которые также добавляют отступы.
Решение состоит в том, чтобы изменить заданный по умолчанию фон EditText на что-то другое (или ничего, но фон для EditText, вероятно, недопустим). Это можно сделать настройкой android: background XML attribute.
источник
Просто используйте
источник
Используйте это в вашем ImageView XML
андроид: adjustViewBounds = "истина"
источник