Ответ 1
с помощью android:includeFontPadding="false"
мне очень помогли в подобной ситуации.
У меня проблема с TextView
. Я не хочу, чтобы над ним была маржа/дополнение.
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ptp_hour"
android:textColor="@color/black"
android:textSize="100dp"
android:height="100dp"
android:layout_marginTop="0dp"
android:paddingTop="0dp"
android:includeFontPadding="false"
android:maxLines="1"
android:text="10"/>
Мой TextView
выглядит так, и, несмотря на то, что textSize
и height
установлены в одно и то же значение, над шрифтом есть пробел. Это беспокоит меня, потому что я хочу поместить другое представление относительно верхней части шрифта. Этот интервал включен в сам шрифт?
И еще один вопрос: если я узнаю, что край 20dp сверху и 7dp снизу отлично работает на моем устройстве, могу ли я полагаться, что он будет вести себя аналогичным образом на других экранах? (эти поля для кнопок)
с помощью android:includeFontPadding="false"
мне очень помогли в подобной ситуации.
У меня была такая же проблема, когда настройка android:includeFontPadding=false
не помогла. Лучшим решением, которое я смог найти в разумные сроки, было переопределение метода TextView onDraw
и настройка холста для разницы между значениями метрик шрифтов и значениями всплытия:
FontMetricsInt fontMetricsInt;
@Override
protected void onDraw(Canvas canvas) {
if (adjustTopForAscent){
if (fontMetricsInt == null){
fontMetricsInt = new FontMetricsInt();
getPaint().getFontMetricsInt(fontMetricsInt);
}
canvas.translate(0, fontMetricsInt.top - fontMetricsInt.ascent);
}
super.onDraw(canvas);
}
Что вам нужно сделать, так это поставить другой вид относительно верхней части шрифта и дать ему отрицательный android:layout_marginBottom
в dip, чтобы он соответствовал верхней части шрифта. Если у шрифта есть запас, я не думаю, что есть лучший способ сделать это.
Да, это пространство включено по умолчанию. Вы не можете удалить это пространство в соответствии с моей областью поиска. Поэтому вам нужно реализовать некоторую логику, чтобы иметь такое представление.
См. ниже Изображение:
Это не очень хорошая идея, но вы можете сделать код ниже:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:background="#ffffff">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ptp_hour"
android:textColor="@android:color/black"
android:textSize="100sp"
android:lineSpacingMultiplier="0.8"
android:scrollY="-100dp"
android:scrollX="100dp"
android:text="10"/>
<TextView
android:text="10"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#00FFFFFF"
android:shadowColor="#000000"
android:shadowDy="-50"
android:shadowRadius="1"
android:textSize="100dp"/>
</LinearLayout>
Здесь сначала "10" относится к вашим свойствам, а второй - как я установил для вас.
Enjoy.:))